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?
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?
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.
some tools / libraries that could come in handy (not exactly frameworks, but the need for frameworks is very context-sensitive)
And java specific : - Custom networking, Reflection, Generics,...
As for the java specific, see : http://java.sun.com/docs/books/tutorial/
Unordered and quick list :-)
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.
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
Really depends on the position you are applying for.
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:
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.
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...
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.
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.
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.
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.