Ask HN: What topics are a must have for a JR server side Java dev?

I've trying to leave IT Support to move into development and I'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.

I've started the Hyperskill Java course, but I don't want to be forever stuck in tutorials as I've done in the past. I honestly don't know what are some real-life scenarios of Java development for a server so I don'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?

7 points | by culopatin 1384 days ago

3 comments

  • eitland 1384 days ago
    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

    • m0ck 1383 days ago
      >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 1383 days ago
        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 1384 days ago
    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 1384 days ago
    For devs transitioning into modern java development, I always suggest:

    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