What to really learn for commercial Java ?

Soooo… hi :smiley:

My dream is to become a developer in the commercial world, ideally in Java. I’ve coded in other languages but nothing really feels the same as Java (Also known as my lover) :persecutioncomplex:

I started University last year but due to some health issues, I suspended my studies and I’m actually moving to a new Uni this year (much closer to home, better school etc). The main language they teach is Java 8) but I really want to prepare myself for a job and core Java just won’t cut it.

I’ve seen that Spring and Hibernate seem extremely popular in the commercial environment at the moment and I was wondering if it was worth picking these up now? Even if it’s just a little. Also, what else should I be looking into or looking to learn?

Thanks :slight_smile:

Speaking as a new hire, learn C# as well. Seriously, I’ve heard of a lot of companies using C#/Java and it’s ridiculously easy to learn as it’s so similar to Java. My work uses C# with ASP.NET MVC and Bootstrap for the frontend of web apps, and Java as a backend with Tomcat. Tomcat is basically a server to run your “web apps” on, I recommend looking into it. There are other servlet containers besides Tomcat too, but I can’t remember their names right now.

I couldn’t tell you for sure, but from my experience most places don’t just use Java for both their backend and frontend systems. But of course, that really only applies to web development. I don’t know about the rest of the market!

I was recently hired as a Java Developer and I haven’t actually done any Java since I started, for them at least.

Anyway I would suggest learning Spring as well as taking a look at JSP, JSF, Struts, and Hibernate. Here’s a quick reference to what they are:

If Java’s the main language you want to learn build software with it and take as many Java courses that you can at the university. You’ll get enough that way.

More importantly though don’t focus only on Java, chances are you’ll get hired because you know about different technologies. So to supplement your Java I’d look at HTML/CSS/Javascript/C#/ASP/.NET/Oracle Databases/SQL/etc… If, of course, the idea is that you become a web application developer. Which if you use Java I’m guessing that’s what will happen :slight_smile:

I agree with opiop on C#. Also, it couldn’t hurt to look into Assembly. Knowing what goes on under the hood is kinda cool and I’m sure it looks nice on a resume. But then again I’m not a hired developer yet. Just an intern.

Well I’ve coded in C# a little before so that’s good It was really easy to learn. I’ve never touched any of the others though. Sounds fun doing both C# and Java as a job!

I’ve touched HTML/CSS before and a little SQL with JDBC but not much. I’m honestly not sure what I’d like to do with Java/programming right now, I honestly didn’t enough web development much when I had to do it for a project but maybe it would be different with Java, and if I can learn more languages then I can do more things!

Seems a little daunting :o but I’ll add it to the list!

Yeah, basically I think the idea is to learn the full stack. If you’re learning Java you’ll for sure have mid-tier/frontend dev, if you learn database stuff and how to connect/query you’ll have backend/database experience, then with html/css/javascript/asp you have some web. Assembly isn’t a bad idea either. Since you don’t know exactly what you wanna do stick to Java and put feelers out into other areas to find out what you like.

If you want a programming job learn everything .NET and extra goodies like AngularJS and such.

That’s where all the jobs are, period.

If you’re just starting out as well, most of the Java jobs (around me at least) require at least 5 years experience, as to where alot of .NET jobs are pretty much at any experience level.

The job I’m at now I work with all .NET, I’m here in the office as I type this post actually :slight_smile:

Think of programming languages and libraries as tools. Core Java might be a hammer, Java EE might be a saw, C++ might be a screwdriver, JavaScript might be a wrench, etc.

You might hear somebody say “I want to build houses”, but generally you wouldn’t hear somebody say “I want to work as a hammer guy”. Most workers learn multiple tools, and learning a new tool can help you understand when to use (or not use) a tool you thought you already understood.

That’s how programming is. So it’s a little short-sighted, imho, to focus on just one language or library. You have to focus on the types of projects you want to work on, and the tools will follow. So think about it from that angle: what types of projects do you want to work on? What do you find interesting? Maybe it’s robotics, or mobile applications, or business applications, or web development. Pick a project, and then break that project down into the various tools you’ll need, and then learn those tools.

Or maybe think about programming as an art and programming languages as colors? Or paint brushes and clay?

Also, try not to give too much credence to people saying “I do XYZ, therefore you should learn XYZ”. That doesn’t really tell you what’s going to be in demand 5 or 10 years from now.

I’ve just taken a look on a job search website and there are indeed a lot of jobs within .NET so I think I’m going to look into C# and .NET.

This is actually refreshing to hear. I do honestly feel that my aims are a little shortsighted and i’m just stuck in a bit of a rut when it comes to programming and what I want to do. I’m a long way off any sort of job which is great as it gives me time to learn and adapt. One of my biggest problems is that would hate to learn a language and then never/hardly use it again, I feel like it’s time wasted.

I’m definitely interested in mobile development and business applications, these seem to really grab me. At the moment the only things I really make are small games for fun and though I have little experience with other languages, I never use them. I’m interested in learning more about C# and Java :point: (I should add, more about learning what I can do with other languages with them/API’s and what works well with them)

[quote=“SauronWatchesYou,post:9,topic:54615”]
I don’t think you should look at it that way. Even if an artist specializes in water colors, I don’t think time they spend learning about colored pencils is wasted time. Knowing how a saw works and when to use it can help you better understand how a hammer works and when to use that.

For example, I used lisp quite a bit in school. But I’ve never used lisp outside of school, and I doubt I’ll ever have to use it for a job or even for a personal project ever again. However, I absolutely do not consider my time learning lisp as wasted time! My understanding of lisp helps me be a better Java programmer, and has made picking up other languages like JavaScript easier. For example, both lisp and JavaScript can treat code as data and data as code; it’s a neat trick, and it would have taken me a lot longer to understand if I hadn’t seen lisp before.

So I wouldn’t worry too much about where the jobs are or what’s in demand right now. First figure out what you find interesting- and keep in mind that you don’t have to choose just one thing, or find the right thing immediately. Try a few different types of projects out. Buy a little robotics kit. Create a web page. Make a little application. Then make that as a mobile app. Eventually you’ll find something you enjoy, and the tools will be an afterthought.

In my Enterprise job it’s all Java, Groovy, JSON, XSD, and a few languages and APIs we’ve devised ourselves. I support client devs connecting to us in Java, C#, C++, Python, and so on. You’ll never know everything you need for any particular task, just be ready to learn new stuff quick and how not to get stuck by any particular obstacle.

[quote=“KevinWorkman,post:10,topic:54615”]

This is great! ;D it’s more about have fun, enjoy the journey and just get a better understanding of the technology. I really appreciate this advice, it has got me really motivated to start learning new things, look at more languages, see what I can build and become a better programmer in general. I’m definitely going to look into C#/.NET and take it from there.

I can’t stress it enough though, learn how the core of programming works. Learn design patterns, study syntax etc… When I got this job, I was given a project and told to go figure out how to make it. I ended up having to quickly learn C#, ASP.NET, Bootstrap, relearn lots of Gradle, how to use the JDBC API etc… honestly the list goes on. And I’ve only had this job for four days.

What’s my point? Well, if I only focused on Java syntax and Java based design patterns, I would be struggling here. Sure, I’m not a master at any of technologies I just listed yet, but I understand them all after only four days. I know them well enough to develop a fairly complex web application for the developers here to use. It’s so very important that you as a programmer be able to adapt to new languages and technologies quickly. You will always need to learn more!

And then learn to not care about either. :stuck_out_tongue:

But really, learn to solve problems, not memorize specific tools, similar to what Kevin said.

Eh you’re right, that’s what I meant. I worded that wrong!

Hi again all :smiley: just a little update to the advice I received.

I’ve started learning a lot more C# and i’m really enjoying it so far. I’ve also started to look a little into the Windows Phone side as well as this is an area that interests me a fair bit.

I looked into ASP.NET but it’s not really my cup of tea, I don’t enjoy web design much. I’m also thinking of looking more into C++ due to the similarities between Java/C#, it would be nice to handle something different. On the Java front I actually haven’t done much over the past few days, though I think i’m going to look into the Android SDK to go along side the Windows Phone side of things.

I’m going to be juggling a fair amount by the looks of things. Would you recommend that I maybe drop a few things and focus on a few at a time or does it really make no difference?

Thanks again ;D

A bit late answer, but on server side Java, XML, XSD, XSLT and all those become more and more important. At least in the area where I am working. Even Java code is partly created from XSDs in that environment.

You should at least be familiar with the full stack. Spend a little time on each. In my current job I write Javascript with jQuery and Angular, Java with about 30-40 libraries, including Hibernate. Database knowledge is helpful as well, even if you don’t do any database work. Learn the types of relationships as well as some basic SQL.

Wandering vaguely off-topic into the realms of ideological discourse I’d say that the Java platform is far bigger than a single tool but is in fact an entire toolkit, and a pretty large one at that… and that many of the things found sprouting off off it eg. Spring, Hibernate, etc. that you might be forced to “learn” are absolute heaps of bullshit that will get you into very tedious shitty jobs competing with a load of other candidates who have what they like to think of as “skills” but which are, in fact, mostly excuses for not understanding what’s really going on.

YMMV.

Hibernate. Sheesh.

Cas :slight_smile:

As far as I can see, at least web-applications actually move away from server-side java/.net mvc etc., leaving java as a thin middleware to provide authorization managed rest-apis for delivering json that is handled by client side technologies, being moslty angularjs.