Hello folks! I know I haven’t write anything for quite a while and some of you were actually worried I’d stopped but nope, still here.
I was really really busy with tons of projects, hangouts which will continue but I will try to write down at least an article per week.
Anyways, I am going to speak about Java today and Java 8 as it’s going to be released very soon and my impressions so far. I’d like to thank Java User Groups in Bucharest for reminding me of the Java 8 official webcast on 25th of March at 18:00 CET time, you can register and watch it here.
I am not an intensive Java user but I think I have a pretty good idea of its advantages and disadvantages. So for starters we all know it’s a cross-platform language because of the Java Virtual Machine(JVM), self-managed because we don’t have to worry about memory management, destructors, its syntax is very similar to one of the C++ and of course there is no multiple inheritance. The problem of multiple inheritance has been solved by using of Interfaces.
In order to make everything clear here are the differences across Java variances.
- JDK – Java Development Kit
- JRE – Java Runtime Environment
- Java SE – Java Standard Edition
SE defines a set of capabilities and functionalities; there are more complex editions (Enterprise Edition – EE) and simpler ones (Mobile Edition – ME – for mobile environments).
The JDK includes the compiler and other tools needed to develop Java applications; JRE does not. So, to run a Java application someone else provides, you need JRE; to develop a Java application, you need JDK.
Edited: As Chris Marasti-Georg pointed out in a comment, you can find out lots of information at Sun’sJava web site, and in particular from the Java SE section, (2nd option, Java SE Development Kit (JDK) 6 Update 10).
Within a given version of Java, this answer remains valid. JDK is the Java Development Kit, JRE is the Java Runtime Environment, Java SE is the standard edition, and so on. But the version 6 (1.6) is becoming antiquated.
Java has another great advantage: it’s free and open source meaning you can actually see the implementations of a sorting algorithm for example, though some implementations on Java EE(Enterprise Editions) are not available to the public.
Where do we use Java? Pretty much everywhere, every digital device has some Java built-in: PCs, laptops, phones, (smart)watches, tablets, air-conditioners, fridges, cars etc. Java really has this big advantage of working on everything that has some processing power. We use it in web, through applets or as powerful backends.
Performance? Though huge performance improvements have been done over the years, C++ still beats it and I think that’s natural, though Java has outperformed C++ in some cases, so I suppose if performance is not critical Java is going to be fast enough.
Java is also (almost) pure Object Oriented, exception made by the primitive data type and because of its high level of abstractisation it’s natural to write Programs in it. Everything looks great so far, however…
In my personal opinion Java lacks a great IDE(editor) such as Visual Studio though Net Beans does a fairly good job, Eclipse is out of the question.
Because of the backwards compatibility, Java looks like an old language and also lacks some features that modern programming languages do have for quite sometime; for example: LINQ, Lamba Expressions and Tail recursion.
You can’t mess up with pointers at all, you can’t overload operators nor make data conversions. You know that cross-platform operability I was talking about ? Meh…not so much, Java is not supported by Apple (iOS) or by Microsoft(Windows Phone).
Also in my personal opinion Sun was doing a much better job maintaining Java than Oracle does now.
What can we expect from Java 8 ? Apparently, lambdas are going to be introduces as well as many new APIs and fixes. You can read more about it here.
I’ll make another post about Java after the official release with some examples and some books recommandations.