Java Platform and Language
Developed in the early 1990ís over a four year period by Sun Microsystems, Java was
introduced in 1995 as a write-once run-anywhere programming language. Java was designed to be: 1- object oriented, 2- secure, 3- architecture neutral, 4- portable, 5- high performance, 6- interpreted, threaded, and dynamic. It was well received and the
leading web browsers incorporated the ability to run Java applets within web pages. In 2006, Sun Microsystems initiated the release of Java as open source software under the terms of the GNU GPL: General Public License and in 2007 completed the process making all of Java's core code available under free software and open source distribution terms.
Specific configurations of Java were developed for different platforms:
|Java SE: Standard Edition
||Develop and deploy Java applications on desktops and servers in embedded and real-time environments.
|Java EE: Enterprise Edition
||An API and runtime environment for developing and running enterprise software, including network and web services, and other large-scale, multi-tiered, scalable, reliable, and secure network applications.
|Java ME: Micro Edition
||A flexible development environment for applications running on mobile and embedded devices: mobile phones and personal digital assistants.
Sun Microsystems made the decision to differentiate the JRE: Java Run-time Environment from the SDK: Software Development Kit. The compiler, utility programs, and header files are not included in the JRE. In 2009, Oracle Corporation acquired Java along with open source Solaris and MySQL from Sun Microsystems.
Java EE has wide global acceptance and the JCP: Java Community Process has promoted
more than 20 compatible implementations.
Java continues to be updated to meet new standards and requirements. Java EE applications are being coded for lighter weight application servers
rewritten as cloud-native runtimes and frameworks. Microservices are being developed using Java EE.
Java versions 9, 10, and 11 provide type
inferences and syntactic changes. This makes coding Java programs
more like the C and C# languages and improves readability. Java 9
and higher includes jdeprscan. This helps identify deprecated APIs
in code and dependencies; compilation warnings will be generated.
Java 11 is the first LTS: Long Term support release. Oracle will be
providing security and bug-fixing for Java 11 until at least 2026.
The next LTS release after Java 11 is not scheduled to be released
until September 2021
Specialized Java configurations brought to market include:
|Java for Business
||Product subscription model designed to extend Oracle Corporation's support periods for releases, provide faster access to technology updates and offer enterprise deployment features for customers using Java SE technology.
|Java Technology - Embedded
||Provides the capability to develop reliable, portable, and secure applications for embedded systems.
||Graphics and media package for designing, creating, and testing rich client applications. There is an updated version of the flexible development environment for applications running on mobile and embedded devices: mobile phones and personal digital assistants.
||The open source Apache Derby Java technology database supported by Oracle Corporation / Sun Microsystems.
In an effort to make it easier to adopt, Oracle has made JavaFX available as a separate module. Starting with the release of JDK: Java Development Kit 11, it will be its own module. Java FX
will be supported in JDK 8 through 2022.
In 2017, Oracle Corporation moved Java EE to the Eclipse Foundation to apply a community-based governance approach that fosters collaboration and innovation.
The Java Community Process will not be involved in deciding technical specifications for future iterations of Java EE. Instead, the Eclipse Foundation will be creating a new specification. As part
of this process, Java EE has been rebranded to highlight the differences from the previous enterprise Java architecture.
In February 2018, Java EE was renamed to Jakarta EE. There will be a compatibility logo, and certification process. Access will
be provided to the TCK: Technology Compatibility Kits.
According to the JVM Ecosystem Survey reported by
www.sdtimes.com - January 2019, 79 percent of developers use Java 8,
4 percent use Java 9, and 4 percent use Java 10.
JDK: Java Development Kit
The JDK is a development environment for building applications and components using the Java programming language. Java Platform Module System is a named self-describing collection of code and data. It provides an optional link time phase between compile and run-time for assembly and optimization into a custom run-time image. Options have been added to the javavc, jlink, and Java tools for specifying the module
definition paths. The modular JAR has a module-info class in its root directory. The JMOD is a packaging format which includes native code and configuration files. The JDK has been divided into a set of configurable required modules. The JDK and JRE
run-time images have been restructured to accomodate modules and improve performance, security, and maintainability. Most of the JDK's internal APIs are inaccessible by default, a few essential widely used internal APIs remain accessible until supported replacements exist for all or most of their functionality. The command jdcps -jdkinternals can be run to determine if code uses
internal JDK APIs.
There is a URL definition scheme for naming modules, classes, and resources stored in a run-tim image; it does not disclose the internal structure or format of the image.
The endorsed standards override and extension mechanism have been removed. The rt.jar and tools.jar have been removed from the Java run-time image. There is a simplified version-string format to distinguish major, minor, security, and patch update releases.
JDK 10 is an implementation of the Java Standard Edition 10 concetrating on cloud and serverless computing. Improvements were made to include local variable types,
there also were garbage collection and compilation enhancements. JDK was a short-term release with public updates for six months. JDK 11 is available as a three year LTS: long term support version.
The Java Development Kit contains the software and tools for compiling, debugging, and running applets and applications written in the Java language. The primary components are javac, jar, and the archiver which packages related class libraries into a single JAR file. The JDK assists in managing JAR files: javadoc - the documentation generator, jdb - the debugger, jps- the process status tool, javap - the class file dissassembler, and other components. The JDK comes with a complete JRE: Java
Run-time Environment which is a private run-time of a JVM: Java Virtual Machine and all of the class libraries present in the production environment. There also are internationalization and IDL libraries for use by developers.
Multithreading is the capability for a program to perform several tasks simultaneously within a program. While other programming languages have to call operating system procedures in order to enable multithreading, this capability has been included in the Java base code. The
cpus: central processing units of the new generation of computer hardware have 2, 4, or 6 cores and many servers have multiple processing units. Applications coded with the Java language have significant advantages in using multitasking to present and control sounds, images, graphics, video,
and animation. The Java language and specialized SDKs are being used in multimedia applications.
The Java language is being used for:
- implementing application modernization as part of SOA: service
- mobile device and smartphone application development - base code, SDKs, and tools.
- supporting DevOps and hybrid cloud development.
- microservices and container-based environments
orchestrated by Kubernetes.
In most situations, organizations have elected to utilize Java in hybrid combinations with commercial software: web servers, databases, middleware and enterprise development. The
leading commercial Java web server and development platforms are IBM WebSphere / Rational and Oracle Corporation WebLogic Server / Oracle Application Server and WebLogic / JDeveloper. Java competes with the commercial Microsoft .NET development platform. Decisions will have to made whether to migrate client/server C++ and Visual Basic applications to .NET, Java,
or other open source or hybrid platforms. A similar decision based upon different assumptions will apply to legacy mainframe applications: web servicization, recoding, application
migration, or platform migration.
With Eclipse Foundation managing Java EE, organizations
will be able to adopt more agile processes, implement flexible
licensing, and change the governance process. The Eclipse Foundation has other open source projects and a community-based governance approach. This allows for greater collaboration on projects and
rapid innovation. Oracle also has made changes in the Java SE and JDK release cycle in an effort to make the releases more agile instead of features-driven. The plan is to put out a major release
every six months. Update releases will continue to be released every quarter, and long term support releases come out every three years.
Java Training by SYS-ED
For the past twenty years, SYS-ED has been providing Java training
for Fortune 1000 companies, government municipalities, and healthcare providers as they designed and coded enterprise applications. We are now taking a leading role in providing open source and commercial Java courses and training programs required to
apply the new methodologies and advancements in information technology infrastructure: virtualization, cloud computing, and mobile computing.
SYS-EDís Java curriculum teaches:
||How to migrate databases for an efficient and safe implementation of JDBC.
||How to implement the infrastructure and code for high volume database transactions and data redundancy.
||How to repurpose and leverage the existing investment in mainframe systems software: TCP/IP, DB2, XML, CICS Transaction Server, and COBOL applications.
||Open systems and third party utilities and frameworks - Swing, Struts, JUnit, JUnitPerf, JDBC, Hibernate, and Maven - which will streamline the coding, reduce the time spent debugging, and enhance extensibility.
||How to implement Java solutions that have the capability to co-exist and eventually interoperate with Microsoftís .NET platform.
||Java as a modern cloud-native development architecture.
||The MicroProfile Eclipse open source specification for
enterprise Java microservices.
SYS-EDís Java training affords an organization the opportunity to cross train staff and save the time and expense of hiring new personnel. We donít
just present the Java
programming language; we explain, demonstrate, and teach. When a client employee completes a SYS-ED Java course, that individual will have a uniform approach to
programs and servlets: designing, coding, and debugging.
Specialized Java Training Services
SYS-ED recognizes and differentiates between industry standard content and educational consulting. As part of qualifying an assignment, we review a prospective client's project specifications,
inventory of code, and documentation standards and then select the examples, sample programs, and exercises
best suited to address specific training objectives. If necessary, we will create new examples and tailored workshops.
At the client discretion, assessment validation can be provided. After a course is over, students are welcome to submit the Java questions which come up back on the job.
Courseware for Teaching
The courseware used in SYS-ED courses consists of student handouts, industry-specific examples, and exercises. At the client
discretion an industry standard textbook can be augmented with presentation slides. The CETi knowledge base aggregates and analyzes information in the public domain. It also is a service
for reviewing and answering questions. Content selectively is added to courseware.