views:

1426

answers:

11

With the constant updating of technologies surrounding Java, as a Java developer what is the base knowledge you should be expected to have?

Should a Java developer know EJB3, Spring, Hibernate etc?

+19  A: 

Depends completely on what you're working on. In any case, it's more valuable to know thoroughly the language fundamentals (interfaces, generics, annotations, concurrency etc.) rather than specific frameworks or such. It's easy to learn quickly new technologies when you master the fundamentals.

Joonas Pulakka
I do agree with you to some extent. but its almost impossible to be working with java and avoid ejb or hibernate. Knowing some of the most used frameworks is allways a plus
Nuno Furtado
Sucks if your stuck on Java 1.4, no annotations or generics.
James McMahon
@NunFur: I've avoided all three so far (I'm doing desktop app development).
Michael Myers
+10  A: 

some tools / libraries that could come in handy (not exactly frameworks, but the need for frameworks is very context-sensitive)

  • a GUI-framework (swing, swt, ...)
  • a log tool (log4j,Logging...)
  • a decent library (Appache Commons,..)
  • an IDE (eclipse, intellij,..)
  • a build tool (ANT,..)
  • a testing tool : (UNIT,..)
  • a documentation tool (javadoc, and I might ommit the ellipsis here I think)

And java specific : - Custom networking, Reflection, Generics,...

As for the java specific, see : http://java.sun.com/docs/books/tutorial/

Peter
+2  A: 

Unordered and quick list :-)

  • Improvements on language from major version changes (Generics, Annotations, Enums, ...).
  • Coding Conventions.
  • Design Patterns.
  • Build tool (Ant) or Project Management Tool (Maven).
  • VCS like SVN or Git.
  • Apache Commons Libraries :-)
  • Continuous Integration Tools and Unit testing.
SourceRebels
+5  A: 

I wouldn't say you should know them cold. You should, however, have a passing familiarity with the big frameworks, such that you know where they can/should be used, and can get up to speed on them quickly when appropriate.

Know the Java SE libraries thoroughly, especially make sure you are familiar with stuff like when/where to use the various collections, and the new high-level concurrency stuff. Know how the language works under the hood and how the JVM you are using works, especially the garbage collection. Be familiar with the language, especially new stuff like generics.

Read lots of other peoples' code, good and bad, and grok it. If you see something you don't understand, Google it, and try to figure it out. If you still don't get it, ask someone to explain it to you.

After that, most of what you need to learn is not language-specific. Read Code Complete, Design Patterns, and Pragmatic Programmer.

Adam Jaskiewicz
+2  A: 

As a Java developer you need to understand the following basic things.

1) How does JVM work ?

2) What are the OOPS concepts and how do they Implemented in Java?

3) Multi threading

3) Understand design pattern

4) Understand Swing

5) And Jdk 1.5 features

Thomman
You probably also need to know how to count to five! ;-)
John Topley
"One... two... five..." "Three sir!"
Adam Jaskiewicz
+1  A: 

Really depends on the position you are applying for.

  • Application Front End (Swing)
  • Web Front End (JSP, JSF, Tapestry, Struts, Spring MVC, etc)
  • Server Side (SQL, Hibernate, Spring, EJB)

Just an example of what kind of technologies you might be expected to know and far from a complete list in anyway. Really depends on the role and the company and if they are looking for a graduate/junior/senior developer.

What is important for all roles is that you know the core java API. This would include thinsg like:

  • Collections/Concurrent Collections
  • Generics
  • io/nio
  • Threading and the new concurrent framework
  • Swing (probably the least important since you normally want a specialist)

You will also be expected to have an understanding of Object Oriented Design and Design Patterns. Especially how this effects java. Understand basic OO concepts such as polymorphism etc.

Always a bonus if you have some experience with an IDE, usually Eclipse and of course some version control software like SVN or CVS.

willcodejavaforfood
A: 

Have you read this free ebook yet?

Essential Skills for Agile Development
www.agileskills.org/pdf/ESAD.pdf

The ability to write easily understood code by others, principles of DRY might be good foundation...

zeroin23
+1  A: 

One of the best ways to demonstrate to others quickly that you have a certain Java skill set is to take a Sun Certification. Several exist depending on what area you want to know about.

Thorbjørn Ravn Andersen
+1  A: 

You don't have to study all (time consstraint), however, it's important for you to know 1. NAME. 2. ADVANTAGES. 3. DISADVANTAGES. 4. when TO USE the technology. 5. when NOT TO USE the technology.

When a new project comes in, you can easily mix-and-match the technology.

janetsmith
A: 

There can be broadly 3 categories I can think of

A. If you are a college graduate with no industry experience B. If you are a experienced professional C. If you are a experienced professional working on Web based development

I guess expectation on breadth and depth of knowledge increases with your experience. Below link is just and small list of things you may want to know based on above criteria. Let me know what others think about it.

Java Developer Expectations

Priya
A: 

I would say that first of all you should have a good understanding of framework. After that, if you are just aiming to get some job then you should go with the job requirements and work on that, because every company needs something different. But if your aim is to learn the language for your future then right path would be learning from scratch. Then decide which way you wanna go WEB or APPLICATION or ENTERPRISE.

Zinx