To know, is to know that you know nothing. That is the meaning of true knowledge.
This post is to provide the reader with a quick overview of the Java ecosystem and it’s technology stack.
To be honest, there have been many revolutionary changes and additions to the Java Platform – from Java EE 7, Java SE 8 to Java Embedded 8 …. wow! Exciting times!
In the midst of all this, why did I decide to write a blog post about a rudimentary topic such as the Java platform and its related technologies?
How many times have you conducted an interview and asked a candidate to provide a rough estimate/rating of their Java skill set (on a specific scale)? What kind of answers have you received ? 8/10, 4/5, 6.5/10 ?? I am pretty surprised as to how the candidate actually managed to muster these figures in a matter of few seconds (I really don’t think that experience matters here!)
So the premise of this post is to
- Drive home the point that “How would you rate your Java/J2EE skills?” is an unreasonable question – even though I have made the mistake of asking this on a number of occasions!
- Help you answer it!
Read on . . . . . . .
Java Technology can be broadly categorized into
- Java SE
- Java EE
- Java Embedded
- Java FX
Let’s begin . . . . .
Java Standard Edition (Java SE)
The Platform itself! The mother of all other Java related technologies ranging from Java EE on enterprise servers to Java Embedded on resource constrained devices.
Latest version – Java SE 8 (click here for more on the new stuff in Java SE 8)
Java is not just a programming language as many people mistakenly assume. It’s a complete Platform
(sorry about the fact that I had to plug in the tabular content in the form of images. For some reason I can’t seem to find support for inserting tables into my WordPress blogs. Hence I decided to write the content in Word and use their snapshots)
Java Enterprise Edition (Java EE)
For developing enterprise grade applications which are distributed, multi-tiered, scalable, robust, fault tolerant.
Latest version – Java EE 7 (click here for more on the latest Java EE 7 features)
Standards driven model
- Java EE 7 defines a unified model for developing rich and powerful server side solutions
- It is composed of individual specifications which are standards in themselves.
- Each of these specifications are a set of interfaces/APIs which are implemented by vendors of Application Servers (more details here)
There are 32 specifications which Java EE defines
Alright then! I am guessing you have had enough of Java EE …. ! Let’s move on
The Java Embedded technologies are focussed on mobile and embedded devices (RFIDs, sensors, micro controllers. blu-ray discs etc) and are powered mainly by different flavours of Java ME and SE for specific device capabilities
Java Micro Edition (Java ME) flavours
Java ME Embedded Client
- Based on Connected Device Configuration (CDC) – subset of Java SE platform for small device like mobile phones
- Sufficient for devices having 8 MB RAM or more
Java ME Embedded
- New launch
- Based on Connected Limited Device Configuration (CLDC) – JVM which is optimized for really small embedded systems which have 130 KB or more memory
- Suitable for memory/resource constrained embedded devices such as sensors, wireless modules etc
- Hailed as the platform of choice for developing applications in the Internet Of Things (IoT) era
- The latest version is Java ME Embedded 8 (Early Access) – Lends support for language features from Java SE 8
Java SE flavours
Java SE Embedded
- It’s JVM implementation is suitable for mid to high range embedded devices
- 32 MB or more memory is required
- Allows developers to configure their own custom JRE as per application requirements
- Latest version – Java SE Embedded 8
Java Embedded Suite
- New platform – An enriched version of Java SE Embedded
- Adds enterprise functionalities like support for Glass Fish server (yes – an application server in an embedded device!), Java DB, REST support through JAX-RS implementation
- Oracle Event Processing – Optional module in the Java SE Embedded Suite. It aims at extending real time, event driven processing support to embedded devices
Java FX is leveraged to build rich client applications. It sort of completes the puzzle so to say, complements the Java server side development stack and provides a comprehensive UI platform including graphics, and media API support. It’s tailor made to deliver high performance with hardware accelerated graphics.
Ok, so.. what was the whole point of this post? To help you answer the inevitable “How would you rate your Java/J2EE skills?”
Basically, this is what you can do
- Summarize this post – it’s not going to be tough.. trust me!
- Ask the interviewer to be more specific as far as Java is concerned, given the fact that you explained the length and breadth of the Java platform!
Although this post only touched upon the various Java tech flavors, it’s quite evident as to how vast it is. That’s precisely why, we as mortals cannot expect to attach numbers and random figures to our Java knowledge. Instead of fooling around with Java ratings, let’s just have fun with the platform and language and leverage it to build stuff which the world has not yet imagined!
|Reference:||Hi there . . ! How would you rate your Java/Java EE skills? from our JCG partner Abhishek Gupta at the Object Oriented.. blog.|
Bulletproof Java Code: A Practical Strategy for Developing Functional, Reliable, and Secure Java Code
Use Java? If you do, you know that Java software can be used to drive application logic of Web services or Web applications. Perhaps you use it for desktop applications? Or, embedded devices? Whatever your use of Java code, functional errors are the enemy!
To combat this enemy, your team might already perform functional testing. Even so, you're taking significant risks if you have not yet implemented a comprehensive team-wide quality management strategy. Such a strategy alleviates reliability, security, and performance problems to ensure that your code is free of functionality errors.Read this article to learn about this simple four-step strategy that is proven to make Java code more reliable, more secure, and easier to maintain.