DEV Community

Java Developers, What's in Your Toolkit?

Andrew (he/him) on October 14, 2019

What IDEs, frameworks, languages, and other software do you use on a regular or semi-regular basis? Spring? Android Studio? Git? Maven / Gradle / A...
Collapse
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard • Edited

Language: Kotlin
Frontend: Angular/Typescript
Desktop app: tornado FX
IDE : Jetbrains IDEA
build system: gradle
Server side: spring boot, http4k, ktor, GraphQL

A word of caution: "catching up with Android development" is a full time job or more, I wouldn't recommend it as a side thing

Collapse
 
johnson_cor profile image
Corey Johnson

What do you mean; Android doesn't change that fast. \s

Once I took a 6 month break from Android development and literally everything had changed. Fragments were now considered a compat library class, ViewModels and live data were king, and there was this looming nightmare for existing projects called AndroidX

Collapse
 
awwsmm profile image
Andrew (he/him)

Yeah I meant it more as "trying to get a flavor for" Android development. Maybe make a small app or two to understand the process. Do you know of any good resources?

Collapse
 
johnson_cor profile image
Corey Johnson

I would honestly recommend just working through the developer.android.com/ tutorials; they give you a good overview of how things work! Patience is key though, it takes a while to really grasp how everything works together

Thread Thread
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard

As I said, I would actually recommend avoiding that resource.

I take seriously this honest admission by Diane Hackborn that the Android team doesn't really know or care how you should build your app

cnblogs.com/jarvisyin/p/6361184.html

Thread Thread
 
johnson_cor profile image
Corey Johnson

I think it's great that you're providing other resources, but I don't quite understand why you would knock the official documentation since there are resources there that aren't just tutorials. I know it's not perfect, but it can be a good starting point to investigate things further. I've looked at reywenderlich in the past and found their tutorials really helpful.

Thread Thread
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard • Edited

I feel that the android documentation is preaching a lot of bad things, in particular all the examples still tell you to put your logic inside God Activities, Fragments, Context, ...

I also feel that they are not talking about lots of good libraries, just because they do not come from them, but do talk about a lot of bad libraries, just because they come from them.

I was probably too harsh, do read the parts of the developer.android.com that are good, like Room for example. But always keep a critical mind and use other sources as well. Learn Kotlin from Jetbrains for example.

Thread Thread
 
johnson_cor profile image
Corey Johnson

I agree that often times they recommend particularly unhelpful resources. The worst offender in my opinion is the networking libraries. I have NO idea why they do not recommend okhttp and retrofit. Maybe one day they'll open source their docs so the community can help maintain them

Thread Thread
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard

It's simple,
Retrofit and okhttp do not come from them so they don't document it.
AsyncTask and IntentService do come from them so they document it.

It makes sense from their perspective, but from the perspective of someone learning how to build the app, you end up not learning about the right thing.

Collapse
 
jmfayard profile image
Jean-Michel 🕵🏻‍♂️ Fayard

Avoid at all costs the official Android documentation, it's bad.

I would recommend those tutorials
raywenderlich.com/

Thread Thread
 
awwsmm profile image
Andrew (he/him)

Thanks, Jean-Michel! And thanks for the discussion with Corey! I'll check out the resources you recommended as well as developer.android.com (taking the latter with a grain of salt).

Collapse
 
peiche profile image
Paul • Edited

Language(s): Java

Project Management: Manual, npm/Yarn for front-end

Version Control: CVS, GitHub, Bitbucket

Database: DB2, Oracle SQL

IDEs / Editors: Eclipse, VSCode

Front-End: JavaScript, jQuery, a little dabbling in React

Other: CSS custom properties and grid

Collapse
 
awwsmm profile image
Andrew (he/him)

Is "Manual" a tool or are you actually doing everything by hand?

Collapse
 
peiche profile image
Paul

I might have anticipated that. It's by hand.

Thread Thread
 
awwsmm profile image
Andrew (he/him)

Haha, all these packages have ridiculous names nowadays, you'll have to forgive me. :-)

Thread Thread
 
peiche profile image
Paul

No worries, man. You never know!

Collapse
 
agilebelma profile image
Belma

Language(s): Java, Kotlin

Project Management: Team City

Version Control: Git, BitBucket, GitKracken

Database: MongoDB and MySQL

IDEs / Editors: IntelliJ IDEA

Front-End: ReactJS

Other: TypeScript

Collapse
 
awwsmm profile image
Andrew (he/him)

I've never heard of Team City, what is that?

Collapse
 
igorperikov profile image
Igor Perikov

It's a ci/cd service from jetbrains - company behind kotlin and intellij. Though I wouldn't call it project management tool

Collapse
 
cjbrooks12 profile image
Casey Brooks

Language: Kotlin. Java only when I must (supporting older codebases). New code is pure Kotlin, even multiplatform if it makes sense

VCS: Git, GitHub, GitKraken

CI/CD: Azure Devops, GitHub Actions, Travis CI (though I'm trying to migrate those repos to GitHub Actions)

Build Tools: Gradle. Lots and lots of Gradle.

IDEs: Android Studio, IntelliJ IDEA Ultimate

Front End: Vuejs, though I'm using Kotlin/JS more and more

Back End: Ktor, Kotlin/JS serverless on Node

Other: project docs websites with Orchid

Collapse
 
awwsmm profile image
Andrew (he/him)

I guess I'm moving to Gradle and IntelliJ, haha! Does Kotlin have its own front-end? Is that what Kotlin/JS is?

Collapse
 
mojo2012 profile image
Matti

Language(s): Java
Project Management: Maven
Version Control: Git, GitHub, Bitbucket
Database: H2, Postgres, hsql
IDEs / Editors: Eclipse, VSCode
Other: trying to create my own little RAD framework (core-next.io), learned a lot about spring and some other cools stuff while doing it. Also digging into native macos apps using java (sounds weird huh? :-D, github.com/mojo2012/kakao).

Collapse
 
awwsmm profile image
Andrew (he/him)

We're setup twins! Though all these comments here have me wondering if the grass is greener on the IntelliJ / Gradle / Kotlin side of the fence...

Collapse
 
mojo2012 profile image
Matti

I tried intellij, so many times. I tell myself, just do what people tell you: go though the first 2 weeks and you never want to go back. Well I did that, I used it for more than 2 weeks and I still don't get it. It's so friggin buggy!
You know, I do almost everything with keyboard shortcuts. When using switching to to other apps and back suddenly the window focus is messed up. I hit cmd-w to close the active tab but something else in the background closes. That even happens with active windows (like the vcs view, which is a separate window).
There is no proper compile feedback, like in eclipse. Everything always looks good until you realize that although the app started, some code just doesn't work because it actually didn't compile properly.
It makes awesome statically typed java like a dynamic language (aka javascript hell).
There isn't even a autoformat and autoimport hook on save - that'S one of the most basic features at all!
You have to install a damn plugin that uses the eclipse formatter, what the heck.
Then why are there so many panels open, I constantly switch them, because I don't need all this crap and they just reappear all the time. Even the "do you want to buy the ultimate version???" message bubble. I already have that damn ultimate version you son of a ...
To sum it up: eclipse may be slow but it's still the way to go for me, because it supports me in most cases, whereas intellij is just like a text editor, not really an IDE to me.

Collapse
 
hleb profile image
Hleb

Language: Java

Project Management: Maven, Gradle

Version Control: Git, GitHub, GitLab, BitBucket

Database: MongoDB, H2, PostgreSQL, ElasticSearch

IDEs / Editors: IntelliJ IDEA, some Vim

Front-End: don't work with FE last 5 years

Other: playing with GraalVM and Quarkus framework

Collapse
 
awwsmm profile image
Andrew (he/him)

How do you like GraalVM? Do you actually use it for polyglot programming? I want to play around with it, but it feels gimmicky

Collapse
 
hleb profile image
Hleb

Actually I didn't try it for polyglot things and mainly use with Java. It's interesting for me due to native-image feature (as Quarkus project too). Currently I'm trying it on my pet projects, not on production. But I want to figure out how can I use it with AWS Lambda functions with which I work on my job. Hope, it can help me with Lambda function cold start issue :)

Collapse
 
scottshipp profile image
scottshipp
Collapse
 
awwsmm profile image
Andrew (he/him)

Good ol' Apache Commons.

Failsafe looks interesting... could you explain that in a nutshell?

Collapse
 
_hs_ profile image
HS

Language: Java; Scala and Groovy for personal fun
IDE: IntelliJ + VS Code sometimes nano or VI if I can't help it
Build tool: Gradle
Framework: Micronaut; before it was Spring
DB: Azure CosmosDB, before it was MongoDB, PostgreSQL, MySQL/MariaDB,

Mostly I used REST but currently I need to manage multiple sides so WebSockets, SSE and message driven + serverless

Collapse
 
kamilolszewskinekken profile image
5unny • Edited

What is the deal with MongoDB these days? Why is it so popular? I know it is more scalable and faster, but what does it offer to you-developers? How would you compare your daily work on project between using any SQL like Postgres and Mongo? Don't get me wrong, I know something about it(I participate in great university.mongodb.com courses), but I do not see any advantages in switching to Mongo in small-scale applications, as it would take time to educate whole team and it changes nothing and even more I would have to sacrifice multidocument transactions. So what I am missing guys?

Anyway, my stack is below:
Language(s): Java, Kotlin
Project Management: Maven, Gradle (on Kotlin ones), NPM for frontend
Version Control: Git(GitLab), SVN(iF.SVNAdmin) for docs
Database: PostgreSQL+PostGIS, MariaDB, H2 in local envs, ElasticSearch for fulltext
IDEs / Editors: IntelliJ <3 (Eclipse before)
Back-end: Spring
Testing: JUnit5, Mockito, AssertJ + Sonar for static analysis
Front-End: Angular, JSF(JoinFaces+AdminFaces/PrimeFaces) if project is quick and team is inexperienced with SPAs
Hosted apps: YouTrack(task management), Rancher(containerized dev/test environments), GitLab CI(CI/CD), Artifactory(maven repo), PassBolt(in-team password management), MailDev/mailtrap.io (mocking smtp), ELK (log aggregation)

Other: Currently focusing on DDD and Spring Cloud microservices running on Kubernetes

Collapse
 
robm99x profile image
Rob Mitchell

Language(s): Java, JavaScript, XML, XSL, JSON, bash

Project Management: Ant (yup, old school)

Version Control: GitLab

Database: PostgreSQL

IDEs / Editors: long time Eclipse user (VSCode pretty awesome too) and BBEdit (Mac OS-based)

Front-End: jQuery, JavaScript, CSS, HTML, JSP, XML/XSL

Other: requests come through custom, homegrown MVC framework, hits Java code, queries db, results transformed into XML, passed as request attribute to JSP, calls Java code to transform with XSL, producing more HTML and JS code, JSP converts to HTML, presented to browser. Ouch!

Collapse
 
johnson_cor profile image
Corey Johnson

I do Android dev mostly so:

Language(s): Kotlin, Java, XML

Project Management: Jira, Trello

Version Control: Git, GitHub

Database: MySQL (using room in Android)

IDEs / Editors: Android Studio and Sublime Text

Front-End: Mostly using xml for defining layouts in Android

Right now I'm trying to learn more about web development; which is really tough. It seems like there are always hundreds of correct solutions for any problem I'm trying to solve during web development!

Collapse
 
awwsmm profile image
Andrew (he/him)

I haven't had the pleasure of working with Jira yet, though I suspect I won't avoid it forever.

Collapse
 
fultonbrowne profile image
Fulton Browne
  • Languages: Java and Kotlin
  • Project Management: Gradle
  • IDE: intellij
  • DB PostgreSQL and sirix DB
  • Front end: native android, vueJS, and flutter
  • other: Android SDK and emulator
Collapse
 
awwsmm profile image
Andrew (he/him)

I've seen a lot of support for IntelliJ... is it that much better than Eclipse to justify the price?

Collapse
 
cpandya231 profile image
Chintan Pandya

Yes, please give it a try with Community Edition.

Collapse
 
fultonbrowne profile image
Fulton Browne

The community edition is free and open source, I use it every day, it blows eclipse away in every way.

Thread Thread
 
awwsmm profile image
Andrew (he/him)

I'll definitely check it out! How, specifically, does it improve on Eclipse?

Thread Thread
 
fultonbrowne profile image
Fulton Browne

Its much faster, more organized, better android support, cleaner ui, better code auto complete, really nice git features, its just awesome.

Collapse
 
jnunderwood profile image
John N Underwood • Edited

Language: Groovy

Build System: Gradle

Version Control: Git, GitLab

Database: H2, SQL Server

IDEs / Editors: Vim, VS Code, IntelliJ Idea

Front-End: JavaScript, jQuery, Bootstrap, some Vue, interested in Svelte

Other: Grails for web applications and Micronaut for services, Docker, and Linux

Collapse
 
joeclarkphd profile image
Joseph Clark

As a new Java developer (5 months now) I've been working on a model or starter Spring Boot web app aimed at long-term maintainability. (here: github.com/joeclark-phd/granite) I'm honing in on a toolkit that I like.

IDE: IntelliJ (free edition for now)

Languages: Java 8 (I expect to upgrade to 11 soon), and of course HTML/CSS/Javascript

Database: PostgreSQL

Framework: Spring Boot

Front-end: Thymeleaf templates with Bootstrap 4, JQuery

Dependency management: Maven + WebJars (the latter for JQuery, Bootstrap, etc.)

Build tools: Maven, Docker

Testing: JUnit 5, Testcontainers

I have a pretty good build process at this point which uses Testcontainers to spin up temporary Postgres databases as Docker containers during the 'test' phase for true integration testing, then builds and publishes images of the app and the database to Docker Hub in the 'deploy' phase. Still got some bugs to work out though.

Collapse
 
awwsmm profile image
Andrew (he/him)

That testing framework with Testcontainers sounds awesome, I would love to read an article about your setup!

Collapse
 
dhrubo55 profile image
Dhrubo Hasan

Language(s): Java

Version Control: Git, BitBucket, GitKracken

Database: postgres

IDEs / Editors: IntelliJ IDEA

Front-End: Vue JS

Other: JS

Collapse
 
awwsmm profile image
Andrew (he/him)

Ooh, what's GitKracken?

Collapse
 
cjbrooks12 profile image
Casey Brooks

GitKraken is amazing! Easily the best Git GUI I've ever used.

Thread Thread
 
awwsmm profile image
Andrew (he/him)

It looks really neat! I'll have to play around with it. Thanks for the recommendation!

Collapse
 
thefern profile image
Fernando B 🚀

Java/kotlin
Intellij Android studio
Gradle
Git, github, self hosted gitea
Mongo, and SQL

Collapse
 
awwsmm profile image
Andrew (he/him)

Ive never used Gitea... how does it compare to GitHub?

Collapse
 
thefern profile image
Fernando B 🚀

I first got paranoid about github when some people's repos were being deleted by bots, or entire countries blocked so I installed gitea on my raspberry pi at home. I mainly use it to mirror my important repos, as well as private repos. It almost looks like github, but there are tons of customization, documentation is good and is open source.

Collapse
 
erikpischel profile image
Erik Pischel

Language(s): Java

build system: gradle

Version Control: Git, company hosted GitLab

Database: Oracle

IDEs / Editors: Eclipse, emacs (mainly as git client "magit" , and org-mode), occassionally notepad++

Front-End: legacy: plain old JSPs; more recent: Angular, Vaadin

server-side: legacy: weblogic, more recent: spring boot

CI: jenkins

Collapse
 
awwsmm profile image
Andrew (he/him)

What's Javalin? I'm not sure I've heard of that one before

 
awwsmm profile image
Andrew (he/him)

Do you ever run into problems with lack of support for Gradle? Maven is ubiquitous so I've never had a problem with a library missing or anything. Is it easy enough to use with Spring?

Collapse
 
awwsmm profile image
Andrew (he/him)

Why so passionate about Gradle? I thought Maven was the de facto standard but these responses are making me think otherwise

Collapse
 
cjbrooks12 profile image
Casey Brooks • Edited

I think Maven is still very popular in the backend/enterprise development space, where it's been used for ages and "just works". It's stable, it's easy to maintain, and it does exactly what is needed from it without any fuss. But I also think that it's pretty common for Maven to just be a relatively small part of the overall build/deploy process for a Java project, and Jenkins or other CI platforms pick up where Maven drops off.

Gradle is a much more fully-rounded automation tool, and ideally, would handle the entire build/deploy pipeline and CI tools would only need to call Gradle once for the entire thing to go from source to production. If the entire build/deploy pipeline is in Gradle, then it is no longer a requirement for CI tools to run deploys, as you can still deploy locally if you need to, and you're less locked into a specific CI platform for its plugins.

Also it seems pretty rare that new frameworks/libraries are created using Maven, most new projects I see all use Gradle. This may very well be selection bias on my part as I live almost exclusively in the Android and Kotlin world where Gradle is the supreme ruler, but it does seem much more common for new projects to be created with Gradle. This leads me to believe that Gradle is actually the "de facto standard" over Maven these days.