views:

385

answers:

9

Heyja,

a frequently used answer to the question "What is so special about Java?" is "The tools and frameworks". I guess this is correct. I am stunned when i see all the tools and frameworks which make your life as a developer much easier.

My Java skills are not perfect, but good average, and i am still working on it. I have begun to learn Ant for example and i don't want to miss it. It's awesome. The same with Hibernate. Now i ask myself what i should learn next. I want to gain experience for myself and especially my CV. Unfortunately there are so many of it. And everybody is talking about it, like Spring, Struts, JavaServer Faces, Maven, ...

What is widely used in the real world? What tools besides Ant or Subversion/CVS are important? What framework is necessary to learn to be accepted as a "real Java programmer" and to get the interesting jobs? ;-)

+2  A: 

Eclipse is a must. Not only is it a great IDE, but it integrates quite well with other tools (SVN, Ant...).

fbonnet
Not if you're an IntelliJ user.
duffymo
+3  A: 

Maven is worth learning, but I would suggest Spring. Spring will make your coding life much simpler.

Arcane
+11  A: 

If you want to be perceived as an expert Java programmer, there's no substitute for knowing the standard Java class libraries inside and out. I've seen way too many examples of Java programmers, even experienced ones, re-implementing things from the standard class libraries because they don't know they're in there.

MattK
Heyja, you are absolutely right. To master the core language is an important target. What interest me more is what i need beside it.
Maerch
+6  A: 

JUnit is the most important Java framework to learn. Not only is it a valuable tool to use for unit testing, it teaches you what a framework should be: small and focused on doing one thing well.

Bill the Lizard
+2  A: 

The Apache Commons project provides a lot of useful tools that save reinventing the wheel.

Rob Hruska
+3  A: 

+1 for Spring.

Struts 1.x is not the latest hype, but is probably worth knowing, as gazillions of lines of code have been written with it. If you're in the consulting business, you'll run into it one day or another.

Also, if you're improving your Java skills, I definitely recommend the book "Effective Java, 2nd edition" by Joshua Bloch.

Olivier
+1 For reading Effective Java
Rob Hruska
+1  A: 

I highly recommend the Find Bugs tool. It is a static code analysis tool that reports likely bugs in your code. The plugin for Eclipse is fantastic and is one of the primary reasons I don't use another IDE.

Hayden Jones
IntelliJ Inspector performs all those inspections while you're editing, not as a static, after-the-fact batch run. I prefer that method, because that way the problems never appear in my code. It can also operate in a batch mode, like FindBugs.
duffymo
+6  A: 

If we're talking marketability, then you ideally want to be the kind of developer who can be productive at any layer of a production app. So learn something about each layer.

  • MVC: Struts, Spring MVC.
  • Data Access: Hibernate, iBatis, JPA.
  • IOC: Spring (huuuuge for integrating large systems. If you can, learn the AOP principles that Spring is based on)
  • App Server: Tomcat, JBoss.
  • Testing: JUnit
  • Presentation: JSF, JSP.

Also, don't neglect the non-Java technologies you need to know:

  • SQL - because you will need to talk directly to the database
  • HTML
  • JQuery - never underestimate the importance of neat UI features. For most users, that's the only part of what you do that they understand.

If I had to choose one thing out of this list, I'd go for Spring. If choosing two, I'd take Spring and JQuery.

rtperson
+2  A: 

Two suggestions, somewhat off topic:

  1. Never put something on your resume unless you really know and remember using it. I came across too many candidates who put COM on their resume' without even knowing what the acronym stands for or how to define it.

  2. IMHO, the ability to quickly find answers, learn and understand is far greater than a specific knowledge. Today it's Java and Spring, tomorrow it's Ruby on Rails. Who cares.

zvikico
1. Yap!2. Yeah this is also right, but how fast can you learn such a complex framework to use it correctly?
Maerch