
Ask HN: I've been away from Java for 10 years. How do I get back? - jozi9
I did Java for 5 years and left right before Generics was introduced, things were mainly JBoss, J2EE, Struts. Spring started gaining momentum. Since then I did 7 years of project management, and 3 years of python&#x2F;django lately.<p>Basically I want to get back in the game and be able to jump in a mid level Java position and work effectively. I&#x27;m interested in language recap and top 5 current frameworks used, etc. Preferred format is books, maybe moocs, and of course I want to spend the least amount of time for the optimal result.<p>I really appreciate it, thanks!
======
mindcrime
Wow, that's actually kinda tough to answer. There's been a LOT of changes in
the Java world in the last 10 years - as you might guess. And I mean both in
terms of the language itself, and the tooling and ecosystem as far as
libraries and frameworks, etc.

The answer also depends a bit on what exactly you want to do. If you're mainly
interested in web apps, it's one thing, "big data" is another world
altogether, mobile (Android) has its own ecosystem, etc.

All of that said, here are some thoughts:

Generics and the newer Collections related stuff is one area that changed a
lot. There's online documentation at:

[https://docs.oracle.com/javase/tutorial/java/generics/index....](https://docs.oracle.com/javase/tutorial/java/generics/index.html)

[https://docs.oracle.com/javase/tutorial/java/generics/types....](https://docs.oracle.com/javase/tutorial/java/generics/types.html)

and a decent, if somewhat older, book is
[http://shop.oreilly.com/product/9780596527754.do](http://shop.oreilly.com/product/9780596527754.do)

Then there's the newer concurrency stuff that came along in the Java 5 / Java
6 era. Fork/Join, Executors, etc. _Java Concurrency In Practice_ should still
be useful to you, even though it is, again, a little bit dated now.

[https://www.amazon.com/Java-Concurrency-Practice-Brian-
Goetz...](https://www.amazon.com/Java-Concurrency-Practice-Brian-
Goetz/dp/0321349601)

To get started with the Java 8 stuff, a book like "Java 8 in Action" would be
good.

[https://www.amazon.com/Java-Action-Lambdas-functional-
style-...](https://www.amazon.com/Java-Action-Lambdas-functional-style-
programming/dp/1617291994/ref=pd_lpo_sbs_14_t_1?_encoding=UTF8&psc=1&refRID=977J2A16G5NXN92BF98Y)

Another good intro the Java 8 era stuff is

[https://www.amazon.com/Beginning-Java-Language-Features-
Expr...](https://www.amazon.com/Beginning-Java-Language-Features-
Expressions/dp/1430266589/ref=sr_1_1?s=books&ie=UTF8&qid=1506814235&sr=1-1&keywords=java+8+language+features)

And to make it even harder, Java 9 just dropped, so there's even more new
stuff. I just picked up this book myself, but haven't had a lot of time to dig
into it yet.

[https://www.amazon.com/Java-Programmers-4th-Deitel-
Developer...](https://www.amazon.com/Java-Programmers-4th-Deitel-
Developer/dp/0134777565/ref=sr_1_3?s=books&ie=UTF8&qid=1506815511&sr=1-3&keywords=java+9)

For frameworks, Spring and Hibernate are both still popular and it wouldn't
hurt to brush up on both of those. Spring Boot in particular has caught on for
a lot of Java developers.

[https://www.amazon.com/Spring-Boot-Action-Craig-
Walls/dp/161...](https://www.amazon.com/Spring-Boot-Action-Craig-
Walls/dp/1617292540/ref=pd_sim_14_4?_encoding=UTF8&psc=1&refRID=G9H7ATH8VD44YQ2017PM)

Also, Tomcat is still very popular for hosting java Web applications and
services of various sorts. JBoss / Wildfly is still around, but JEE (as J2EE
is now known) is not as popular as in the past (even though it has actually
improved a LOT).

Play and Dropwizard are two more frameworks you might want to familiarize
yourself with

[https://www.playframework.com/](https://www.playframework.com/)

[http://www.dropwizard.io/1.1.4/docs/](http://www.dropwizard.io/1.1.4/docs/)

In terms of tools, Eclipse is still popular, IntelliJ is probably the most
popular Java IDE these days, and Netbeans seems to have faded from view a bit.
Ant has fallen out of favour for builds, with most devs now using either Maven
or Gradle. Read up on / play around with both of those and you'll be in good
shape there.

Also, Java shops have also been affected by the overall move to "The Cloud"
and you can't really ignore that either. If you haven't already, you'll
probably want to familiarize yourself with AWS and the AWS SDK.

If you want to work/play in the "big data" space, you'll need some combination
of Hadoop, Kafka, Spark, Hive, Storm, Flume, HBase, Impala, etc., etc., etc.

~~~
jozi9
Wow, reading through all of that (and how you put it in perspective) felt like
I'm waking up from Hibernation (pun intended). Solid advices, thanks a lot!

~~~
PaulHoule
I think maven in the ecosystem around it is the biggest thing.

maven makes it easy to incorporate 100s of Jars into your projects, but then
you get to discover the conflicts between 100s of Jars, create build processes
that don't finish before your project is due, etc.

Master maven and then modern Java may seem like a lot of fun!

------
trexen
Become a Kotlin expert.

~~~
mindcrime
For all the hype about Kotlin here on HN, the reality is that there are far
more jobs available for Java devs. To illustrate - looking just at California,
Indeed.com lists 92 jobs for Kotlin, and 12,204 for Java.

For somebody who genuinely prefers Kotlin and has the luxury of being able to
be picky, then sure, focus on Kotlin to exclusion. For somebody who just wants
a job though, it would probably be better to stick with Good Old Fashioned
Java in the near-term and learn Kotlin (or Scala or Groovy or Clojure or
whatever) on the side over time.

~~~
vorg
> learn Kotlin (or Scala or Groovy or Clojure or whatever) on the side

Scala's in a different league to Kotlin, Clojure, or Apache Groovy. None of
those 3 languages are in, say, the TIOBE Top 50 this month, whereas Scala's
listed with almost 1% of the share, compared to Java's 12.7%.

