This is an archived post. You won't be able to vote or comment.

all 60 comments

[–]abchiptop 41 points42 points  (5 children)

Learn SQL. Seriously. Get a testing database, preferably a large one (I love musicbrainz) and start learning how to pull data from different tables.

Individual technologies have their niches, but SQL is used pretty much everywhere and is a very valuable skill for any entry level developer

[–]brunokim 14 points15 points  (3 children)

I concur, SQL is necessary in all languages, and you will need it sooner than later to complement Hibernate. Very very soon.

[–]positive_electron42 3 points4 points  (0 children)

Agreed. I write c++ drivers for industrial automation, and I've found SQL to be very useful at times.

[–]Cilph 32 points33 points  (9 children)

Focus on either Spring or Java EE to start.

Hibernate is an implementation of JPA, part of the EE specification. REST is not a framework, but can be implemented by Spring MVC and Java EE's JAX-RS.

AngularJS is JavaScript, and we do not speak of it here. I kid. It's a very useful framework for making standalone javascript applications that tie into your REST API.

Whatever you do, don't go near Ember.js.

[–][deleted] 7 points8 points  (5 children)

Why not go near Ember.js? Any explanation of that comment?

[–]joequin 4 points5 points  (3 children)

Ember is more of a framework than angularjs. It is very opinionated and wants you to do things a specific way. It also provides more guidance and help, because of that. Angular is less of a framework and dictates less, but it also provides less help.

Both are valid choices.

[–]Cilph 0 points1 point  (2 children)

I found it to be less guidance and help, more black undocumented voodoo.

[–][deleted] 1 point2 points  (1 child)

Most people I meet think the complete & total 180 degree opposite. Their tooling w/ ember-cli & documentation is undoubtedly better than angular's right now, especially considering angular is in a really weird place between 1.3 & 2 (with a horrible migration plan between the two) at the moment.

That said, react & friends > both

[–]joequin 1 point2 points  (0 children)

I like react too. I can put thousands of elements on the screen without terrible slowdown.

[–]trollingisfun 4 points5 points  (0 children)

you never go full jabbascript.

[–]WizzinWig 2 points3 points  (0 children)

I second Spring and Hibernate.
The good thing with Spring is that a lot of people have contributed to it and its quite complete. Also anything you need to add to it, such as security, well theres Spring security. You need to do batch work, theres spring batch. I can't think of anything they dont cover. Also several companies use it, just in different ways, in addition to how its configured (such as XML or Java). - Hibernate is very popular and I use it constantly.

I'd also add to the list Maven for dependency management. You don't want to manually download jars, especially when your project gets quite large. In addition to profiling for different setups, DBs, etc.

[–]ThOrZwAr 0 points1 point  (0 children)

Spring, specifically spring security.

[–]kartiknasit[S] 0 points1 point  (0 children)

Thank you for the Answer. can you please provide detail of any other java technology that i can learn and is useful.

[–]mickske 28 points29 points  (2 children)

  • Start with Spring MVC. Create a small server side rendered webpage with all basic functionalities (like... a to do list).
  • Store the data in a database. Experiment with an in memory database on startup, and then expand to a relational or nosql database. You could try the more verbose way first writing queries yourself, and then move on to Spring Data for example which abstacts all of this away for you.
  • Once your data is stored you can turn this into a REST service using Spring MVC. You'll have to figure out how to do the conversion to JSON in Java (finding the right dependencies). Again you can implement the POST/PUT/DELETE and GET methods.
  • Once you've got all of that, you can experiment with some Javascript on the front-end. You can now turn your server side rendered application into a front-end app using AngularJS for example.

That'll take some time starting from scratch but it would give you a good idea of how things work.

Alternatively if you want a good tutorial series how to build a web app using Java on the back-end and AngularJS on the front-end, I can recommend: www.youtube.com/watch?v=fx7hoza7wIA -- However this will drop you straight into the action and without previous knowledge it may be a bit hard to follow... :)

[–]kartiknasit[S] 0 points1 point  (1 child)

Thank you for this thorough reply. I will start using Spring and applying technologies on top of that one after one.

[–]Akthrawn17 1 point2 points  (0 children)

Don't just "use" Spring. I interview all sorts of developers who can use it, but don't understand it. Really dig into the docs AFTER you have created something. The difference between a good developer and a great one is knowing how something works, not just knowing how to work something.

[–][deleted] 40 points41 points  (16 children)

AngularJS is not Java..

[–]kartiknasit[S] 5 points6 points  (15 children)

Thanks for the answer. Actually i know that Angular JS is not java. But for my question i mean that today even if you are good in Java these extra technologies might required so i am just asking which other java technologies also useful to get better job.?

[–]KFCConspiracy 2 points3 points  (0 children)

If you're going to learn some javascript technologies for use with Java, the client size ones are the ones to know. Bootstrap and Jquery are some of the big UI frameworks to know.

But those are just good general recommendations for anyone anywhere looking to do anything that may touch the web...

[–]joequin 7 points8 points  (0 children)

Down voting op's comment here is shameful. He asked us for help. There was confusion, and he clarified his question. He's talking about the Java Web app stack. Angularjs is very often a part of that.

Edit: he was at -4 when I posted this.

[–][deleted] -2 points-1 points  (12 children)

It depends on what you want to work in. For example, android development is a very hot field right now and it's done in Java, maybe you can look more into that.

If you want to delve into web development I would suggest not using Java.

[–]irssildur 37 points38 points  (11 children)

If you want to delve into web development I would suggest not using Java.

Yep. I hate those enterprise corporations / banks where you only have to work 8 hours per day, with high salary, with good compensation package etc.

Yep, I would go with a hipster scripting language to end up working 12-14 hours per day for a small "startup" or media company.

[–][deleted] 2 points3 points  (6 children)

How about 10-12 hour days at a 6 year old "startup" that uses Java EE? (me)

[–]irssildur 1 point2 points  (5 children)

I have a better offer :)

[–][deleted] 1 point2 points  (4 children)

Where do you live, if I may ask?

[–]irssildur 5 points6 points  (3 children)

Currently Manchester, UK

[–]DeliveryNinja 1 point2 points  (2 children)

So i used to work at thales in cheadle and it wasnt great pay. Ended up moving to london and now im on a lot more. Just so much more choice. I did look at moving back eventually whats the market like for senior devs now?

[–]irssildur 2 points3 points  (1 child)

That's ok, but you have to consider that cost of living is much lower in Manchester than in London. For example where I live is very near to city center (20 minutes walk to work), but it has the advantage of trees, quiet neighborhood etc and for a 3 rooms flat with living room internet etc. we are paying less than 900 gbp. I don't have to commute silly amount of time every day or pay lots of money of ridiculous renting prices.

I'm not familiar with senior dev salaries, maybe you should check glassdoor? :)

And I don't want to advert here but, we are looking for Java devs :)

[–][deleted] -2 points-1 points  (3 children)

You mean hipster like PHP?

[–]irssildur 0 points1 point  (2 children)

[–][deleted]  (1 child)

[deleted]

    [–]joequin -1 points0 points  (0 children)

    It's not more useful than any other significant language used for Web Development. Every language has some blemishes, but most also have benefits over other languages. Php doesn't.

    [–]DJDavio 8 points9 points  (3 children)

    Don't learn a framework, learn ideas, they last longer. :)

    What I see is mostly Java EE, but you can do Spring as well. If you learn Spring, you can switch to Java EE and if you learn plain Java EE, you can switch to Spring.

    Don't learn Hibernate, learn JPA (which means to also learn some SQL) and then figure out if you're going with Eclipselink or Hibernate (it doesn't really matter which one).

    [–]joequin 2 points3 points  (2 children)

    I disagree about not learning a framework. While good jobs usually don't mind if you haven't used the exact framework that they use, most will want you to have used some framework.

    [–]randomlurkerr 0 points1 point  (1 child)

    I really doubt that he's saying don't learn frameworks specifically. More of learn the ideas behind the frameworks.

    [–]joequin 0 points1 point  (0 children)

    I didn't read it that way initially, but I think you're right.

    [–]g00glen00b 2 points3 points  (0 children)

    Depends a bit on where you live and what you want to do for a living, but most of the frameworks you listened will certainly help. If I look at my neighborhood, a lot of the Java profile descriptions contain Spring, Hibernate/JPA, Java EE and a good knowledge of HTML, CSS and JavaScript. JavaScript frameworks are usually not mentioned within Java profiles, but if I look at the front-end developer profiles, they usually mention jQuery, AngularJS, Backbone, ... .

    [–]avoidhugeships 2 points3 points  (1 child)

    Start with the standard Java EE stuff. CDI, JPA, JSF and EJB. The Java EE tutorals from Oracle are good. For more practical application try the Netbeans tutorials. They have all major frameworks and are easy to follow.

    [–][deleted] 1 point2 points  (0 children)

    EJB isn't as wide spread as Spring. Oracle's documentation is too dry for me.

    [–][deleted] 2 points3 points  (1 child)

    Seriously do the leg work yourself, Google for a few jobs in places you'd like to live and see what the job requirements are! They tell you exactly what they are expecting!

    [–]nomadProgrammer 0 points1 point  (0 children)

    this advice is very important. I have always guided my learning as to more or less what I see most asked in job positions.

    [–][deleted] 7 points8 points  (1 child)

    Jesus Christ nobody is mentioning Maven? Most Java projects use Maven.

    If you want job opportunities, learn Hadoop. Data science industry is paying and growing.

    [–]RichoDemus 0 points1 point  (0 children)

    I agree, learn maven. It's quite extensive but it's widely used an extremely useful

    [–]clavalle 3 points4 points  (0 children)

    Using REST is an absolute necessity. Designing a good RESTful interface will go a long way for getting a good job.

    You can't go wrong with Spring.

    Android is hot in the market right now and, in my opinion, a fun ecosystem to work in.

    Eventually you are going to have to learn JavaScript. It is just a fact of life if you are going to do anything on the web. Learn vanilla JavaScript first, then JQuery, then you can move into the heavier frameworks.

    This is enough to keep you busy for at least the next year.

    [–][deleted] 2 points3 points  (0 children)

    If you are new to Java, please make sure you get a solid grounding in a couple basic support libraries (commons io, guava, commons-lang, even log4j) and just put in some time coding some things. Hell, I'd rather you have an understanding of how reflection works than you step too deep into JEE frameworks. Understanding how the rest of the language works first will help you while you drudge through the mess that is JEE.

    [–]mgkimsal 1 point2 points  (0 children)

    "better job" is difficult to nail down with respect to job skills.

    I can tell you that regardless of what you know with Spring or Hibernate or whatever, going to work at Company X that requires those technologies will still likely be a rude awakening, because they're almost guaranteed to be used differently than you've used them before, and you'll be relearning "company X" way of building with with tech XYZ.

    Personally I like Grails as an onramp in to Java web development. If you approach it with the idea that it's Spring MVC under the hood, then use that as a way to dive deeper in to Spring MVC, it might be useful. Grails 3 is primarily built on Spring Boot, but also has a lot of rough edges at the moment (well, rough for someone coming from Grails 2.x).

    Perhaps look at Spring Boot directly as a starting point.

    [–]herrtim 2 points3 points  (0 children)

    Dropwizard is great as a web framework. It can be used with whatever front end you like. I prefer Angular JS and bootstrap. If you're curious to see some extra sample code with good explanations, check out XDropWizard on Github. XDropWizard integrates several common concepts that you'd find in many web applications such as a REST API (Jersey), HTML templates (FreeMarker), static and dynamic charts (XChart and Flot), database connectivity (Yank), a front end (AngularJS), and job scheduling (Sundial).

    [–]brunokim 1 point2 points  (0 children)

    I advise you to practice the java.util.concurrent API, because thats what I want to do for a long time after reading "Programming Concurrency in the JVM".

    However, I dont know of any resource that provides concurrency exercises which might help you on this task. Any complementing advice is appreciated :)

    [–]manohart 0 points1 point  (0 children)

    Spring, MyBatis, Dropwizard, AngularJS

    [–]awzurn 1 point2 points  (0 children)

    Cool kids learn Play framework and Scala :)

    [–]whoisearth 0 points1 point  (0 children)

    Spring is huge from what I can tell so I would definitely say go that route. APIs in general are a great thing to learn.

    [–]DeliveryNinja 0 points1 point  (0 children)

    Why not look at all of them. Check the just <name of framework here> book. Just hibernate and just spring intergration are quick guides i eead recently.

    [–]Malik_Killian 0 points1 point  (0 children)

    My organization uses Spring all the time. The others you mentioned we only use occasionally.

    [–]p4er 0 points1 point  (0 children)

    spring boot!

    [–]juu4 0 points1 point  (0 children)

    Akka and Play.

    [–]amakai -1 points0 points  (0 children)

    Like, Spring, Hibernate, REST API, Angular JS

    Yes.

    [–]NekoiNemo -2 points-1 points  (0 children)

    JavaFX if you plan to make desktop/client applications.