Last week San Francisco hosted the last edition of JavaOne under the responsibility of Sun Microsystem. From now on, Oracle owns Sun and all its technologies. They promised to invest more and more on the Java platform and all related technologies. Oracle is a powerful company and this new juncture makes me relax and keep believing that my present and future are definitively Java-oriented.

I started working with Java in 1998, eleven years ago, developing applets to exploit data about criminality in my city and about the volume of water in the main lakes of my state. This work was really exciting because it introduced me to this nice language and also because I had to learn it by myself through the Internet and buying books from Amazon, since no course was available at that time and no book wad been written in Portuguese yet. I started using the JDK 1.1.4 which was really basic in comparison with what is available today but very useful to plot graphical data using the awt graphics library.

I’ve learned from that first experience that Java is not a complex language, but the object-oriented paradigm is really difficult to learn when the developer is used to work with the functional paradigm. The languages I’ve learned before were Pascal, Delphi, Visual Basic and C. None of them were purely object-oriented, so I had the freedom to code as I wanted. Learning Java, a 99% object-oriented language (1% of primitive types), I realized that my programs had much more code than my algorithms actually demanded. On the other hand, even with more code, these programs became more readable and with a better abstract representation. A class, for instance, represents an element of the real world, like a book, a house, a product, a video, a category, a group or anything else, concrete or abstract. Each class is composed of its properties, represented by attributes, and behavior, represented by methods. If you have an algorithm to implement, you will do it inside one of more methods, writing it as a behavior of the class. The problem is how to do it in a way that the abstraction is consistent with the algorithm and vice versa.


For those who are learning Java and didn’t get my point yet, it’s time to dedicate more time for it. Java is a powerful language, it can solve most computational problems and it’s the most adopted programming language by far, almost unanimous in all computer science courses of universities around the world. So, it is the right choice, but it demands dedication, persistence and creativity to get the work done.

I had 4 years of experience teaching Java for hundreds of people and I’m absolutely convinced that it is not possible to learn Java alone or just attending Java classes. It’s veeery important to join a community of developers and exchange knowledge with them. They will share with you what they’ve learned and you will reinforce your knowledge teaching other people too. This is the main role of Java User Groups (JUG) and it is also the main success factor of these groups. As a former Jug leader (CEJUG), I know what I’m talking about ;).