
Ask HN: What topics are a must have for a JR server side Java dev? - culopatin
I&#x27;ve trying to leave IT Support to move into development and I&#x27;ve been teaching myself front end JS for a few months. However, my employer always seems to have open positions for server-side Java and got me thinking that I should probably learn something related to what I have available instead.<p>I&#x27;ve started the Hyperskill Java course, but I don&#x27;t want to be forever stuck in tutorials as I&#x27;ve done in the past. I honestly don&#x27;t know what are some real-life scenarios of Java development for a server so I don&#x27;t know what to look into after learning the syntax of Java. What are some valuable resources and must-know topics to be a good candidate for a JR position?
======
eitland
Depend on where you work. Most places I've worked however JPA was part of it.

Spring used to be big but today JavaEE is probably better (I've used both.)

I learned a lot from Adam Bien, he is both entertaining and he keeps it down
to earth, useful and real.

Three more things:

1\. Invariably someone will come to trash Java. Don't care about them. Modern
Java is decent.

2\. Learn an IDE. Again, someone will probably say you should learn without
one and that is about as smart as saying a "good carpenter never uses power
tools" i.e. batshit crazy.

Java is pretty much dependent on using tools. I can enjoy both NetBeans,
Eclipse and IntelliJ. All three are better than anything you can get in any
other language (except reSharper, but that is basically IntelliJ for C#)

3\. Learn Maven and/or Gradle. Learn to love it. I learned to love it after
that time I spent three days hunting for libraries for an older (non Java)
maintenance job. Coming back to a system that will happily download and setup
everything is lovely.

edit: FWIW i wrote this lar year. It is kind of indirectly related :
[https://erik.itland.no/questions-about-why-i-like-
java](https://erik.itland.no/questions-about-why-i-like-java)

~~~
m0ck
>Spring used to be big but today JavaEE is probably better Could you elaborate
on that? I am seeing Spring (Boot) used everywhere, only JavaEE projects I
came across were legacy N>8 years old.

~~~
eitland
I can see that is confusing.

Spring is probably the biggest.

My point was that I personally find JavaEE better.

Edit: Personally I'd also look into Quarkus etc if I were to set something up
today, but I don't belive it to be relevant to the original question.

------
quantified
I can tell you the topics but I can’t recommend any resources. You can acquire
and read the source for all the following. Also, reading the JDK source for
classes that you use all the time is very educational.

Spring (core, testing, web (classic, reactive), data, security) Hibernate:
sucks but learn it. Basic app container: Tomcat setup. Building with Gradle
and Maven

If you have your own toy SPA toy product, use it as a vehicle to apply
coursework.

Modern Java is perfectly fine. Try to learn idiomatic 9 or 11, most employers
will still be on 8 but know they need to upgrade eventually.

------
fatcatdogfat
For devs transitioning into modern java development, I always suggest:

[https://spring.io/guides/gs/rest-service/](https://spring.io/guides/gs/rest-
service/)

Lots of new java stuff (for example newer springboot tools and projects) and
old stuff (custom built applications that are no longer being updated and
dynamic web applications that uses older building tools or older frameworks no
longer supported like struts) are used at companies simultaneusly, so if you
learn the new stuff, which is probably easier and more rewarding because its
faster to build applications with, keep in mind you will eventually need to
learn about the "magic under the hood" so dont hesitate to learn and read how
things work.

If you want to learn about legacy dynamic web app or legacy spring (not
springboot just spring, as they are different), google a tutorial for that and
you will learn more about how annoying java web development used to be (and
still is at most fortune 500 companies unable to upgrade to newer
infrastructure, people that complain about java probably worked with one of
these old applications),

If u are unfamiliar with the tools required to run these applications (like
maven or gradle, or installing the java sdk and setting it up, getting your
IDE working), you will learn about setting up a java dev environennt, as it
can be a very frustrating, bug filled experience, dont get frustrated just
google the error messages you will learn a lot,

Real life java application scenarios/projects that you can build for your
portfolio:

-a SQL DB (google: how to connect java springboot to mysql database tutorial) connected to a Java API(google: springboot rest api tutorial) that talks to a JS front end

-a java powered calculator, chess, or hangman application to be run in terminal/console

-A java api that can send out json responses of true or false based on question and answers

The main reasons companies use java is because they built java apps ten years
ago, and its easier to hire java engineers who can maintain that code, rather
than get the company's major apps on a new language that would be harder to
hire to support for

Im sure most companies wouldnt use java if hiring/they didnt have active users
wasnt an issue, but regardless of that, the java development industry is very
healthy and people are optimistic about its career growth for devs

Also suggested:

-improve ability to be able to complete "easy" java leetcode questions so if they give you those you arent caught off gaurd

