Java is a general purpose programming language with a number of features, particular syntax and style, developed by Sun Microsystems. Java was originally called Oak (early years), and was designed for handheld devices and set-top boxes. Oak was unsuccessful so in 1995 Sun changed the name to Java and modified the language to take advantage of the burgeoning World Wide Web. Java source code files (files with a .java extension) are compiled into a format called bytecode (files with a .class extension), which can then be executed by a Java interpreter (more detailed). Compiled Java code (or Java Java bytecode) can run on most computers because of Java interpreters and runtime environments, known as JVMs, exist for most operating systems, including UNIX, the Macintosh OS, and Windows.
Java technology (about, see impl1, impl2) is both a programming language and a platform. The Java programming language is a high-level object-oriented (class based) language with single inheritance and supports an imperative (statement-oriented) coding style within each method. [1] [2]


Java developer's main Toolkit


Best-known online tutorials all about Java and W3C Related Technologies

Java Features: GitHub Java Features, Java 8 Features, • winterbemkyongJava 9journalJava 10 Featuresdocs10-11blogcountdown

Other Tools: Web-ToolkitAPI'sProgrammer's CornerDevelopment ToolsDatabase ToolsModeling & DesignMultimediaMaths - Science


Go Top

Java Platform

onceptual diagram illustrates the components of Oracle's Java SE products Java platform is a particular environment in which Java programming language applications run. Or in other meaning Java "platform" refers to the running of Java programs versus Java itself, which is a programming language. Java programs are machine independent and run intact on any hardware platform that has a Java interpreter (program which translates the Java bytecode into the code that can be understood by the Operating System). This "write once, run anywhere" (cross-platform) concept is what makes Java so appealing. See also the, Introducing the Java Platform.

Java has its own graphical user interface routines that are normally contained in the operating system. Since only a small OS is required to run the Java interpreter (in JVM), Java is closer to its own complete operating environment than other programming languages, hence, "Java, the platform" is often heard. Java is used in a wide variety of computing platforms from embedded devices and mobile phones on the low end, to enterprise servers and supercomputers on the high end.

Types of Java Platform

There are several Java platforms. Many developers, even long-time Java programming language developers, do not understand how the different platforms relate to each other. Here are the platforms of the Java programming language: Java SE, Java EE, Java FX, Java ME and others are the editions of the Java platform, which are the names for a bundle of related programs, or platform, from Oracle which allow for developing and running programs written in the Java programming language. All Java Platforms consist of a JVM, an API, and other platfrom specific components.
See also: Introducing the Java Platform, The Java SE platform, Understanding who and when, Java 6 Platform Revealed, JIT Compilation and Optimizations, Java platform performance, Real Time Java Programming, Java Platform for .Net Developers

Java Virtual Machine

Java Virtual Machine (e.g. Java HotSpot Virtual Machine a core component of a Java SE Platform ) is an abstract computing machine, or virtual machine, it is a platform-independent execution environment that converts bytecode (here java bytecode) into machine language and executes it (see JVM Specification). Java bytecode can also be converted directly into machine language instructions by a just-in-time compiler (JIT). Also note that, although Java programs are platform independent, the code of the Java Virtual Machine (JVM) that execute these programs is not; every supported operating platform has its own JVM[3].
See also: JVM programming languages, JVM Languages, Programming for Java JVM, Jikes, Javassist, The lean, mean, virtual machine

What is a difference between JDK and JRE?

onceptual diagram illustrates the components of Oracle's Java SE products The two most important components of the Java Platform are the JRE and the JDK. Main difference between JRE and JDK is that, you can not compile Java program using JRE, only able to run compiled java .class (bytecode) files. Normally internet users are using JRE, but beware of security hols comes now and then with different Java releases. JDK is more for programmers.

Java Runtime Environment (JRE) contains JVM, class libraries, and other supporting files. It does not contain any development tools such as javac (java compiler), javadoc, etc. Actually JVM runs the program, and it uses the class libraries, and other supporting files provided in JRE. If you want to run any java program, you need to have JRE installed in the system. Shortly: JRE = JVM + Java Packages Classes +runtime libraries.

Java Development Kit (JDK) is required when you do programming in Java platform. It is a bundle of software, e.g. you can create a Java file (using Java packages), compile, debug and run a java file. Shortly: JDK=JRE + Standard JDK Tools and Utilities.


Go Top

From Java Novice to Java Professional

onceptual diagram illustrates the components of Oracle's Java SE products Java platform consists of many components and technologies, it is used in many different areas of todays industry, e.g. in banking management, mobile networks, smard-card technology, and etc. As a beginner, best strategy of learning Java language perfectly is depends on how you plan your roadmap perfectly, because this has an impact on how you become an expert in Java as well. This corner will help you to follow up these road-maps. But, of course, you should be responsible to yourself to follow-up below rules) (disc items) and strategies (ordered items).

  • Learn/Study as much as materials about a topic you need (keep small notes). Apply (use in practice e.g. on your own PC, or better on some real software project). Knowledge share (explain or ask to your collegues, it helps you to solidify your technical knowledge and improve your presentation skills)
  • Make your work/product simpler and applicable and always follow-up/apply good design principles via refactoring your code
  • Do things continuously (assign a task to yourself, if you start this task then complete it, if possible regularly repeat your knowledge archives, e.g. your notes/codes/online-resources, these helps you to follow up new technologies and keep your forgotten data up-to-data)
  1. Learn the Basics of Java (Java for Beginners) via implementing small programs, because when you see your first running programs (e.g. which encrypts the List‹String› output text using DESede algorithm with two different security keys) it gives you motivation to go further to learn more and more.
  2. Study Standard Java page, e.g. some very often used packages, classes e.g. java.util, javax.sql, NotSerializableException, AutoCloseable, GregorianCalendar, LinkedHashSet, PriorityQueue, CallableStatement etc. and APIs/libraries, for Processing XML documents with StAX, Java securit mechanisms and etc. Also, it is recommended to obtain Oracle Certified Professional, Java SE 6/7 Programmer Certificate.
  3. Study Enterprise Java page and learn about web-components (JSPs/Servlets, JSTL, U-EL, JSFs, e.g. javax.servlet.http: HttpSession, WebConnection; javax.servlet.annotation: @WebServlet) with web-containers like Tomcat. About JPA (@Entity, @Id, etc.), ejb-components (stateless and statefull beans, session-driven beans) with Java EE servers like JBoss, Weblogic, etc.
  4. Find at least junior-java-position, ideally java-developer job at some software companies. During the project-implementation, use correct Java code-convetions, always double-check and test your code, and try to apply best solution-practices from which you have learned above so far (e.g. OO Principles and Effective Java). Parallely improve your technical-skills on Java frameworks like (Spring, Hibernate, Struts, jUnit, jMock, Apache Commons, etc.), Web Services (JAX-WS: SOAP, WSDL, wsimport, wsgen and JAX-RS) via studying their APIs and apply/test those what you have learned on your real-software-project. Meanwhile, not forget to test your Java knowledge on wide-range of Interview questions. Also, it is recommended to obtain Oracle Certified Professional Java EE Web Component Developer and Java EE Web Services Developer Certificates.
  5. Now, time to be an expert (expertise in), via studying topics in-deep like: Java concurrency, Performance Optimization, Transaction, Design patterns, AOP principles, etc. and take part in every aspects of SDLC in your project which you have been working on, and follow-up continuous integration software development practices and apply solution-essentilas needed for the project. If you able to do all these, so far you are becoming a Software Solutions Engineer on Enterprise Domain.
  6. If you feel yourself as a senior, then step further to focus on the topics like: Application Integration Frameworks, Software Architect, etc. Here, you can obtain most prestigious architecture level certificate like Oracle Certified Master, Java EE Enterprise Architect Certificate.

References


  1. 1. Webopedia
  2. 2. Sun Microsystem
  3. 3. JVM Tech.
  4. Effective Java
  5. Thinking in Java
  6. Google's Java
  7. Developer's Guide
  8. Why JAVA