Latest News

Wednesday 4 November 2009

10 things all JAVA developers should know

Since Java (I know it's not an acronym, but it stands out like that) was officially introduced in 1995, it has changed the way most of us look at the Operating System. Bill Gate (how ironic) once said that it was not about the hardware but the software which will be the future. A decade or more later, the fifth employee of SUN, John Gage said "The Network is the Computer". Fast-forwarding to the 21st century and John seemed to be right. Anyway, Java was built not to depend on an Operating System and deployed through the network. Java through its applet technology gave birth to Rich Network Application aka Rich Internet Application (RIA). Java is not perfect; or we would not have various releases and more on the way, but Java has given birth to a wide range of programming language (just Google it to find out more).

Without further ado, I am going to get back to subject. This is a brief article on what I believe that every Java developers should know regardless of their experience. I do not personally believe that someone with 5 years experience is not as good as someone with 10 years experience. We all develop our own methods of working but as a developer you need to stay abreast of your technology. So, here are my top 10 not in order of importance (or?):

  1. Remember the basic of JAVA language and OOP paradigm.
    Most experience developers seem to forget the theory behind the language. I am not saying that they are not good at their job but can they explain to junior developers why they have used interfaces instead of abstract classes or why implement a pattern over another one? As a programmer, you become very arrogant as you believe that you write the best code but in the real world, people work in teams with different skill set and experiences. It is important that you can backup your actions/ codes. A very simple question such as; when should I use a String object instead of a StringBuilder/ StringBuffer? You might take this question lightly but can you actually tell someone else the difference?

  2. Know your technology stack
    All developers have to know their technology stack. What does it mean? JAVA is not like other languages; JAVA has subsets such J2ME and superset such as Java EE. We have our own area of expertise but it is important to know the differences between the various sets of JAVA. Some basic questions such as the differences between SWING, Applet, Servlets, EJBs and JAVAFX will boost your confidence. Most developers do not know how to tweak the JVM and the differences between the JRE and the SDK environment. Do you know why you need the SDK to be installed to run Tomcat but you only need the JRE to run an application?

  3. Experiment with various Java EE framework
    I am not asking you to be an expert in every single Java EE framework but it will make the difference if you are familiar with Spring and EJB. That should actually be the de facto framework that should be on every developers CV. Developers should know the difference between Java EE 5 (soon 6) and Spring. Hibernate is also brilliant and it's used for data access but all developers should have moved to JPA by now. Hibernate also comply with JPA therefore there is no more excuses.

  4. Know a scripting language
    JAVA can be heavyweight for some simple tasks which can be implemented using a simple dynamic language such as Python, Perl(?) and others. I would also recommend to developers to learn shell scripting on their target OS.

  5. Know how to develop web services
    The network is the computer, therefore it is important to know the different web services framework available. Data are integrated through web services and opening your services to the "cloud". SWING developers will probably not develop web services but I am sure that they will be connecting to data through web services clients. Understanding the difference between the standardised SOAP and non-standardised ReST will help you choose which is best to implement your services.

  6. Know how and when to multithread your application
    I have to put that in there. Developers should know when and why to multithread an application, thread inter-communication and monitoring. All developers, junior or not, should know how to write a multi-threaded application.

  7. Database development using JDBC and JPA
    This should be a development law. All developers should know how to write SQL queries and how to create databases. All enterprise applications store data in some sort of relational database systems and it is therefore imperative that this knowledge should be of second nature. Java EE 5 introduced JPA (JDO was there before) but it is not applicable to all situation. Hence, knowing the difference and when to implement one instead of the other is important.

  8. Know a client side scripting language and what is AJAX
    The network is the computer and Internet is the deployment platform. Java EE and its various framework are server side executiong which can put extra "load" on the server. If you are looking to move a cloud based system where the providers charges you per resources used, it might be wise to move some of the execution to the client side. AJAX has been buzzing the scene for the last 3 years and more. This is not a technology but a new way of doing something that already existed. There are numerous JAVA AJAX framework such as GWT and DWR which makes it easy to develop AJAX based application which are compiled to JavaScript. Developers should also know what is the AJAX theories.

  9. Know your competitors and do not take part on "what is the best IDE" discussion
    JAVA is not the only language that can do what it does. I think that JAVA is more mature and complete as opposed to other languages. Knowing the difference between JAVA and .NET or JAVA and Ruby is a good asset to have. You also need to know when and why to use one instead of the other. Please please please, do not get into "my IDE is better than x because..." discussion as it is good for the JAVA community to have multiple IDEs and framework available to use. Every tools have their place as for example JDeveloper is better than x if you are going to solely develop on an Oracle stack and etc...

  10. Know ANT (MAVEN?), TOMCAT and any other mainstrean application server
    ANT is the de facto build script for JAVA and its IDE-based development. Maven is becoming popular and soon can be as popular as ANT (not sure of its popularity in the financial sector). TOMCAT  should be immortalised as the based servlet container that all developers should be familiar with.

There are alot more to add but this is just some of the basics that I think all developers should have in their repertoire. Feel free to add to this list in the comments box. If I could had another one to this, would be; all developers not just JAVA, should know how to search the web and Google is your best friends (now support my advertisers by clicking on the links on the right ;) ). I hope you enjoyed the entry and feel free to comments good or bad!!! are welcome.



  • Blogger Comments
  • Facebook Comments

28 comments :

  1. 11. Java is not an acronym

    ReplyDelete
  2. Only one Java EE and Spring is not part of it.

    ReplyDelete
  3. FYI...

    From the Tomcat site: (http://wiki.apache.org/tomcat/FAQ/Miscellaneous)

    "Can I run tomcat with the JRE, or do I need the full JDK?

    Tomcat 4 requires the full JDK. Tomcat 5.5 onwards will work with a JRE or a JDK."

    ReplyDelete
  4. the best IDE is IntelliJ, for sure.

    ReplyDelete
  5. Fantastic one...but a hyperlink for everypoint would have valued your post much higher...anyway it is best of its class even now...Thanks much and please keeping it updated...

    ReplyDelete
  6. Pretty interesting comment about tomcat. I was interested to know How does tomcat compile JSP file without JDK?
    I came across the post which mentions :
    JDT used to compile JSP pages - The Eclipse JDT Java compiler is now used to perform JSP java source code compilation. This compiler loads source dependencies from the container classloader. Ant and javac can still be used.
    http://tomcat.apache.org/tomcat-5.5-doc/jasper-howto.html

    ReplyDelete
  7. 11. JAVA is not an acronym.
    12. Tomcat is not an application server.
    13. Eclipse is a junk.
    14. You have no idea what you're talking, if you compare Java and .NET — mainly because of the difference is cross-platformity, which .NET obviously lacks.
    15. ORM (any) sucks hard. Nothing brilliant in Hibernate (or you just simply don't know it yet).
    16. Do your homework, before speak to a public.

    ReplyDelete
  8. Thanks for the post. I found it very interesting, especially since I am a C/C++ programmer and am just learning Java. (I'm working towards becoming a SCJP before the end of the year). Any advise for someone in my position? Thanks again.

    ReplyDelete
  9. nice article ,but I've just one suggestion,
    why can't we talk about the best IDE , I mean each IDE has its specific futures , personnaly , I didn't use any IDE for developing my projects , I advice you to never do the same thing :) ^^ ! but I didn't understand what you really mean by don't say "this IDE is the best because of bla bla bla bla" ... it can provide interting debate and help developers for their technological choices ... :)

    ReplyDelete
  10. @Ahmed I found IDE debate pointless, it's like debating about favourite colors. Unless the IDE has some features that is not available elsewhere then, we can recommend but not debate. We can recommend the best tool for the job i.e Which IDE would you recommend for JavaFX developement and which one would you recommend for Web Application development?

    ReplyDelete
  11. Working with parallel arrays in Java, unfortunately, requires lots of boilerplate code to solve even simple problems. Closures can eliminate that boilerplate. It?s time to add them to Java.

    vitamin e

    ReplyDelete
  12. @Sara, there are debate in the community about adding Closures to Java from version 7. Hopefully it will be available then

    ReplyDelete
  13. According to me being a Java Developer, one more point should be added to these 10 points and it is JasperReports.

    ReplyDelete
  14. @Purohit, I read your article about JasperReports. I used it in the past (NetBeans IReport plugin) but I think it is not generic enough to be something that is needed to be known. Report generation is usually for developers working on BI tools and CRM but it's still a good tool to have in your bag.

    ReplyDelete
  15. wow all those garments are so amazing and fabulous I don't come to your blog as often as I would like, but whenever I do I see some really amazing things keep up the good work! =)louis vuitton cigar case

    ReplyDelete
  16. HTML5 is one of the hottest growing platforms in web development and it has received the backing of many big IT giants. It guarantees a fantastic web experience and as per predictions it is expected that HTML5 will revolutionize the web development market.
    HTML5 Developer

    ReplyDelete
  17. HTML5 development is intended to produce a workable open source platform that can be used in browser applications throughout the internet by multiple vendors so that anyone can contribute to the development of new applications and no single vendor will have control over specific aspects of the internet.
    HTML5 Development company

    ReplyDelete
  18. nice collection of tools...i used some of tools...its working thank you..
    you can interact with my page...http://www.rizecorp.com/html5andcss3design.html

    ReplyDelete
  19. As per my opinion, every Java programmer should try to understand the basic Java concurrency principles from both a development and troubleshooting perspective such as JVM Thread Dump analysis.

    ReplyDelete
  20. Thanks for sharing.. Really it helped me lot.

    Java Developers

    ReplyDelete
  21. There are various dissertation internet websites on the net when you attain definitely reported with your web page. exists sql

    ReplyDelete
  22. This is a great inspiring article.I am pretty much pleased with your good work.You put really very helpful information. Keep it up. Keep blogging. Looking to reading your next post. Things to Note Before Choosing Web Hosting

    ReplyDelete
  23. Hello, I have browsed most of your posts. This post is probably where I got the most useful information for my research. Thanks for posting, maybe we can see more on this. Are you aware of any other websites on this subject.
    remote java developer jobs

    ReplyDelete
  24. I think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article. sawary compound

    ReplyDelete

Item Reviewed: 10 things all JAVA developers should know Description: Rating: 5 Reviewed By: Unknown
Scroll to Top