Thursday, July 18, 2013

How to explain what Java is?

Some time ago, someone asked me how I would explain someone else what Java is, "...imagine that person is someone who has little experience with Java (hence a Junior), or someone who comes from a .NET project, or a manager" he said. I thought that I should provide a high level explanation, simple and easy to understand but should provide enough detail too.

Java is a general purpose language, object oriented, and semi-interpreted that runs on a Virtual Machine. The syntax is similar to C.

Why general purpose language? Because it is suitable for different domains. This means that you can create from web applications to video games
Why semi-interpreted? Because the .java code you write has to be compiled in .class files, and these .class files run in the Virtual Machine

I would then add that Java is really a set of specifications of how the language has to be rather than a language. Different companies such as IBM or Oracle take those specifications and create their own Java implementations (aka Virtual Machines) and make them available on different operating systems.

Where does Java stand in relation to other market technologies?


Java .NET PHP SAP
Platform multiplatform only works in microsoft environment multiplatform multiplatform
Community a lot not much not much not much
Cost free license free license
Startup not immediate, choice of frameworks first immediate immediate immediate, implementation times very high
Support no yes no yes
Open Source yes no yes no
Human Resources a lot not much a lot not much

Remember this is just a high level approach into understanding what Java is from a global point of view.

Given this, is Java the best language? Is it better than, e.g. .NET? As a consultant, my answer is that it depends on the problem you want to solve; One technology may be more suitable to solve a problem, but not to solve another one, in which case, other technology may be more appropiate. But, in any case, it would require another whole post to make an analysis of what to take into account to choose a language.