I'm new in Java. I'm studying this program language and I guess that pure Java is not very useful. Can you advice me what related technologies / frameworks I should to study firstly?
hai nicholas, Go for struts,spring and hibernate instead of jsp.....
Since pure Java is at the core of all the Java technologies out there, I'd argue that it is still quite useful. I'd still recommend starting with Java, servlets and JSP, and JDBC as a foundation. You can branch out from there as needed.
I think you should concentrate on the basics. a strong base will make sure that whatever technology you deal with in the future will be easy for you. focus on threading, networking and I/O.
Pure Java is not very useful? That is like saying that words and grammar in a traditional language are not very useful when writing something like a story or a poem.
First understand the basics. You will automatically discover what you need or like most while doing that.
Study the JVM workings above all. Even if Java dies (a long and painful death), the JVM will definitely survive and thrive as it is the framework of many newer interesting languages (Scala, Clojure, Jython, etc).
Your knowledge investment will be secure.
You really should start with pure Java. Starting with anything else is like trying to run when you can't walk. Every framwork you'll learn afterwards will be much easier to understand.
Try to get a good book or something about the basics, for me personally studying for the SCJP certification really did the trick, if you're not interested in taking the exam yourself the book is still very educating:
That's a little like asking what car to buy, without any information or where you drive, what your needs are, etc.
Most importantly, make sure you understand Core Java well. A good developer can easily learn new APIs just from looking at their JavaDocs. A bad programmer can use a lot of APIs, but may not know his way around core things like threading. Or as an analogy, Picasso could draw amazing things with a single piece of coal, but your kid isn't a Picasso just because he can use all the palette of Crayolas.
Understand that you can't know everything or be an expert at everything, and figure out the domains you care about. If you don't do rich UIs, skip Swing. If you might do databases, learn JDBC and Hibernate. If you would be doing large web applications or enterprise applications, look at J2EE.
This fact is often obfuscated by job listings, that simply have a wish list of 30 technologies that are unrelated to one another (I've seen my share of 'web programmer who is a Swing expert') and such.
I second the recommendations to take on the SCJP, or find some other way to delve as deep as you can into the language (especially because it's not a particularly deep language...).
But most of your day-to-day development work will be in the libraries and frameworks that surround Java. So here's my short list of what to study next:
- Spring
- JSP (contrary to what a previous poster said, they're everywhere, so you need to know them)
- JSF
- JPA/Hibernate/iBatis
- Tomcat/JBoss/GlassFish
Java is mature enough now that you'll feel like you're playing catch-up to a lot of other developers while you're learning these, but you'll also notice a lot of patterns that reappear in frameworks over and over (like the ubiquitous XML configuration hell).
Good luck!
Pure Java is useful as well, see it as the basis of you want to do it, you need to understand the basics of the frameworks you use, but to the point.
I would learn JSP's and servlets (Changes are you are going to do a Web app and this will help you with the basics)
Also Hibernate and Spring are very popular at the moment.
Most Needed Java Technologies
Web-Based Applications
Enterprise Applications
Java web service libraries like Axis and Weblogic
JSP, Servlets, Custom Tags, JDBC, XML/XSL, EJB, JMS, JTA and JUnit
BEA Weblogic application servers and/or IBM Websphere application
ServersJ2EE Design Patterns
J2EE frameworks like Spring and JSF
JPA frameworks like Hibernate and TopLink
Eclipse IDE and Subversion/Git/CVS
Object Oriented Design and UML diagrams
Oracle, SQL, and database design
Strong problem solving skills and ability to adapt existing systems to fast-changing requirements
Production Support
UNIX/Linux environment
Building scalable customer
solutions