What is Java SE?

The SE stands for Java Standard Edition is a computing platform in which we can execute software, and it can be used for development and deployment of portable code for desktop and server environments. It has the Java programming language in use. It is part of Java software-platform family. Java SE has a variety of general purpose APIs and the Java Class Library. It is the core Java programming platform and provides all the libraries and APIs such as java.lang, java.io, java.math, java.net, java.util etc.

The following are the few APIs which Java SE has -

Applet- An applet is a small application, especially a utility program performing one or a few simple functions. This API provides the classes necessary to create an applet. The applet framework contains two entities. One is applet and the other is applet context. The applet is an embeddable window with a few extra methods which the applet context uses to initialize, start and stop the applet.

AWT- AWT stands for Abstract window toolkit. This package contains all the classes for creating a user interface and for painting graphics and images. Any UI object like button and scrollbar is called as a component.

JDBC- It stands for Java Database Connectivity. It allows you to fetch data from any data source be its relational database, be it a spreadsheet, be it flat file.

Swing- Swing provides a set of 'lightweight' components mainly used for graphical user interface enhancement. All swing components and related classes should be accessed on the dispatching thread.

Collections- Collection refers to a group of objects, known as its elements. There are many methods in the collections Framework interface which depend on the equals method. For example- the contains(Object o) method says that it will return true if the collection contains an element which satisfies the condition that (o==null ? e==null: o.equals(e))

xml binding- It provides a run-time binding framework for client-side user application allowing the user to Marshall, unmarshal, and validation capabilities. JAXBContext is the client-entry point to the runtime binding framework.

JavaFX (Merged to Java SE 8)- This contains several packages within it like javafx.animation(provides set of classes for ease of animation), javafx.application(provides set of classes for application life-cycle classes ) and javafx.beans() etc.

Java 8 Collections Streaming API- It contains classes to support functional-style operations on streams of elements. Such as map-reduce transformation on collections. Stream operations are divided into two parts namely intermediate and terminal operations which are combined together to form pipelines.

Java 9 Reactive Streams API- Reactive Stream initiative was taken by giants like Netflix in order to standardize the asynchronous exchange of data within an application. They are a part of JDK in the form of java.util.concurrent.Flow.interfaces.

Java 9 HTTP/2 API- This API solved various problems which were with the previous HTTP/1.1 API. Previously we cannot have more than 6 connections at a time. This made it complex as other requests had to wait till previous calls get sorted. This got sorted with this API.

Java SE significant features

Java SE has all the basic types and objects of the Java programming language.

It provides with ForEach() method which can iterate through contiguous memory allocations and allows you to use it without knowing its size.

It provides the Collectors class which allows accumulating elements into collections, summarizing data according to various criteria.

It provides with the stream API which allows lazy computation (through this you can initialize only if they are required) and functional-style programming.

It provides a class Base64 for encryption and decryption.

Performance has been improvement for the java.lang.String(byte[], *) constructor and the java.lang.String.getBytes() method.

A new class java.net.URLPermission has been added. It represents permission for accessing a resource defined by a given URL.

It provides a single abstract method interface.

How to set up Java SE on windows

To develop or run Java applications, you need to download and install the Java SE Development Kit.

Step 1.) Download the Java SE latest release from the official site of Oracle.

Step 2.) After downloading the file, you will have an executable file downloaded. Run that file and keep everything as default and keep clicking next.

Step 3.) After completing the installation, your JDK and JRE would be downloaded in the program files folder.

Step 4.) After complete installation, you need to set up the environment variables.

Step 5.) Go to control panel -> System and Security -> System -> Advanced System Settings. The following dialog box will appear.

Step 6.) Click on Environment Variables, go to system variables, and double click on Path.

Step 7.) Now add the path of your bin file present in the JDK file to the Path variable.

The set up Java environment is complete.

For development, you can use any IDE such as IntelliJ IDEA, Eclipse or NetBeans. Eclipse and NetBeans are free but IDEs but IntelliJ IDEA is paid IDE.

Java SE vs Java EE

Java EE refers to Java Enterprise Edition. It is a wrapper around the Java SE providing features for distributed computing, web services, reading and writing from a database in a transactional way. Java EE is a wrapper around Java SE providing certain additional functionalities and features along with that of Java SE.

Java EE is a structured application with a separate client, business, and Enterprise layers.

It is mostly used to develop APIs for Desktop Applications like antivirus software, game, etc.

It is mainly used for developing web applications.

It is suitable for beginning Java developers.

It is suitable for experienced Java developers who build enterprise-wide applications.

User authentication functionality is not provided with Java SE.

User authentication is provided by Java EE.

Future of Java SE

Java SE seems to be losing its charm as it does not provides many useful functionalities and is used for only basic features of Java programming language. The ongoing trend shows decreasing use of Java SE, and more people use other programming platforms such as Java EE, Java ME, and Python. Java SE has come up with features such as Application data-class Sharing, parallel full GC, garbage collector interface, local variable type interface which makes it stand strong with other programming platforms but still it is not up to the mark. Java is currently focusing on data management and machine learning ecosystems.