ChatGPT解决这个技术问题 Extra ChatGPT

Difference between Java SE/EE/ME?

This question's answers are a community effort. Edit existing answers to improve this post. It is not currently accepting new answers or interactions.

Which one should I install when I want to start learning Java? I'm going to start with some basics, so I will write simple programs that create files, directories, edit XML files and so on, nothing too complex for now.

I guess Java SE (Standard Edition) is the one I should install on my Windows 7 desktop. I already have Komodo IDE which I will use to write the Java code.

You should start with learning Java SE. Java EE can be somewhat bewildering at first. When you're ready for it, take a look at this excellent Java EE 7 overview page to get started. Especially the Java EE 7 Oracle tutorial is a good place to begin.

M
Muhammad Nabeel Arif

Java SE = Standard Edition. This is the core Java programming platform. It contains all of the libraries and APIs that any Java programmer should learn (java.lang, java.io, java.math, java.net, java.util, etc...).

Java EE = Enterprise Edition. From Wikipedia:

The Java platform (Enterprise Edition) differs from the Java Standard Edition Platform (Java SE) in that it adds libraries which provide functionality to deploy fault-tolerant, distributed, multi-tier Java software, based largely on modular components running on an application server.

In other words, if your application demands a very large scale, distributed system, then you should consider using Java EE. Built on top of Java SE, it provides libraries for database access (JDBC, JPA), remote method invocation (RMI), messaging (JMS), web services, XML processing, and defines standard APIs for Enterprise JavaBeans, servlets, portlets, Java Server Pages, etc...

Java ME = Micro Edition. This is the platform for developing applications for mobile devices and embedded systems such as set-top boxes. Java ME provides a subset of the functionality of Java SE, but also introduces libraries specific to mobile devices. Because Java ME is based on an earlier version of Java SE, some of the new language features introduced in Java 1.5 (e.g. generics) are not available.

If you are new to Java, definitely start with Java SE.


I would disagree with recommending an IDE to someone who has never coded Java before. Write a few using the command line first so you can have a fighting chance at understanding what CLASSPATH means. If you use Eclipse before you understand Java, that's two big things you're ignorant of.
@duffymo IMO it is actually a good idea to have an IDE recommendation, because coding with a plain text editor does not give any benefit in learning a new language, having intellisense and autocompletion is an invaluable aid for a programmer already knowing other ecosystems to became familiar with the new environment.
@duffymo I am still reading this after 5 years as Google brought me here so I guess there is still a point in starting a discussion. In this specific instance though, I concur with your arguments about IDEs.
I see nothing wrong with discussing difficult and timeless issues.
Is only JDK edition specific? or JRE and JVM are different for SE & EE?
t
tharindu_DG

Here are some differences in terms of APIs

Java SE includes has the following APIs and many more

applet

awt

rmi

jdbc

swing

collections

xml binding

JavaFX (Merged to Java SE 8)

Java 8 Collections Streaming API

Java 9 Reactive Streams API

Java 9 HTTP/2 API

Java EE includes the following APIs and many more

servlet

websocket

java faces

dependency injection

ejb

persistence

transaction

jms

batch api

Java ME includes the following APIs and many more

Wireless Messaging

Java ME Web Services

Security and Trust Services API

Location

Mobile XML API

Hope this helps.


As presented, does that mean that what's in SE isn't included in EE? And what's in ME isn't in EE? It seems that if you want Wireless Messaging, for example, that you need ME and it's not available in EE. Is this correct?
As of Java EE Version 6, is the Collections API a part of Java EE too?
d
duffymo

Java SE is the foundation on which Java EE is built.

Java ME is a subset of SE for mobile devices.

So you should install Java SE for your project.


S
Sunny Patel

According to the Oracle's documentation, there are actually four Java platforms:

Java Platform, Standard Edition (Java SE)

Java Platform, Enterprise Edition (Java EE)

Java Platform, Micro Edition (Java ME)

JavaFX

Java SE is for developing desktop applications and it is the foundation for developing in Java language. It consists of development tools, deployment technologies, and other class libraries and toolkits used in Java applications. Java EE is built on top of Java SE, and it is used for developing web applications and large-scale enterprise applications. Java ME is a subset of the Java SE. It provides an API and a small-footprint virtual machine for running Java applications on small devices. JavaFX is a platform for creating rich internet applications using a lightweight user-interface API. It is a recent addition to the family of Java platforms.

Strictly speaking, these platforms are specifications; they are norms, not software. The Java Platform, Standard Edition Development Kit (JDK) is an official implementation of the Java SE specification, provided by Oracle. There are also other implementations, like OpenJDK and IBM's J9.

People new to Java download a JDK for their platform and operating system (Oracle's JDK is available for download here.)


It's true for Java 6. Java 7 documentation says that there are 3 platforms and JavaFX is part of Java SE.
Java SE is for developing desktop applications Java EE is used for developing web applications and large-scale enterprise applications.
T
Tarik

As I come across this question, I found the information provided on the Oracle's tutorial very complete and worth to share:

The Java Programming Language Platforms

There are four platforms of the Java programming language: Java Platform, Standard Edition (Java SE) Java Platform, Enterprise Edition (Java EE) Java Platform, Micro Edition (Java ME) JavaFX All Java platforms consist of a Java Virtual Machine (VM) and an application programming interface (API). The Java Virtual Machine is a program, for a particular hardware and software platform, that runs Java technology applications. An API is a collection of software components that you can use to create other software components or applications. Each Java platform provides a virtual machine and an API, and this allows applications written for that platform to run on any compatible system with all the advantages of the Java programming language: platform-independence, power, stability, ease-of-development, and security.

Java SE

When most people think of the Java programming language, they think of the Java SE API. Java SE's API provides the core functionality of the Java programming language. It defines everything from the basic types and objects of the Java programming language to high-level classes that are used for networking, security, database access, graphical user interface (GUI) development, and XML parsing. In addition to the core API, the Java SE platform consists of a virtual machine, development tools, deployment technologies, and other class libraries and toolkits commonly used in Java technology applications.

Java EE

The Java EE platform is built on top of the Java SE platform. The Java EE platform provides an API and runtime environment for developing and running large-scale, multi-tiered, scalable, reliable, and secure network applications.

Java ME

The Java ME platform provides an API and a small-footprint virtual machine for running Java programming language applications on small devices, like mobile phones. The API is a subset of the Java SE API, along with special class libraries useful for small device application development. Java ME applications are often clients of Java EE platform services.

JavaFX

JavaFX is a platform for creating rich internet applications using a lightweight user-interface API. JavaFX applications use hardware-accelerated graphics and media engines to take advantage of higher-performance clients and a modern look-and-feel as well as high-level APIs for connecting to networked data sources. JavaFX applications may be clients of Java EE platform services.


copied from oracle site :)
@IrfanNasim I know that it's copied from Oracle and I mentionned that!! did you read the answer from the top?! And do you know that in SO when you provide a link you must copy also the important informations, because once the link is not up to date or not working, people could still read what was in the link!! Its weird that you have 198 rep and you still don't know the rules!!
C
Community

I guess Java SE (Standard Edition) is the one I should install on my Windows 7 desktop

Yes, of course. Java SE is the best one to start with. BTW you must learn Java basics. That means you must learn some of the libraries and APIs in Java SE.

Difference between Java Platform Editions:

Java Micro Edition (Java ME):

Highly optimized runtime environment.

Target consumer products (Pagers, cell phones).

Java ME was formerly known as Java 2 Platform, Micro Edition or J2ME.

Java Standard Edition (Java SE):

Java tools, runtimes, and APIs for developers writing, deploying, and running applets and applications. Java SE was formerly known as Java 2 Platform, Standard Edition or J2SE. (everyone/beginners starting from this)

Java Enterprise Edition(Java EE):

Targets enterprise-class server-side applications. Java EE was formerly known as Java 2 Platform, Enterprise Edition or J2EE.

Another duplicated question for this question.

Lastly, about J.. confusion

JVM (Java Virtual Machine):

JVM is a part of both the JDK and JRE that translates Java byte codes and executes them as native code on the client machine.

JRE (Java Runtime Environment):

It is the environment provided for the java programs to get executed. It contains a JVM, class libraries, and other supporting files. It does not contain any development tools such as compiler, debugger and so on.

JDK (Java Development Kit):

JDK contains tools needed to develop the java programs (javac, java, javadoc, appletviewer, jdb, javap, rmic,...) and JRE to run the program.

Java SDK (Java Software Development Kit):

SDK comprises a JDK and extra software, such as application servers, debuggers, and documentation.

Java SE:

Java platform, Standard Edition (Java SE) lets you develop and deploy Java applications on desktops and servers (same as SDK).

J2SE, J2ME, J2EE

Any Java edition from 1.2 to 1.5

Read more about these topics:

Differences between JDK and Java SDK

Java JDK, SDK, SE?

What is the difference between JVM, JDK, JRE & OpenJDK?


P
Péter Török

Yes, Java SE is where to start. All the tasks you mention can be handled with it.

Java ME is the Mobile Edition, and EE is Enterprise Edition; these are specialized / extended versions of Standard Edition.


G
Grant Gubatan

Java SE (Standard Edition) is for building desktop apps.

Java ME (Micro Edition) is for old mobile devices.

Java EE (Enterprise Edition) is for developing web based applications.


M
Michael

Yes, you should start with Java SE. Java EE is for web applications and Java ME is for mobile applications--both of these build off of SE.


T
Tapas Pal

Developers use different editions of the Java platform to create Java programs that run on desktop computers, web browsers, web servers, mobile information devices (such as feature phones), and embedded devices (such as television set-top boxes). Java Platform, Standard Edition (Java SE): The Java platform for developing applications, which are stand-alone programs that run on desktops. Java SE is also used to develop applets, which are programs that run in web browsers. Java Platform, Enterprise Edition (Java EE): The Java platform for developing enterprise-oriented applications and servlets, which are server programs that conform to Java EE’s Servlet API. Java EE is built on top of Java SE. Java Platform, Micro Edition (Java ME): The Java platform for developing MIDlets, which are programs that run on mobile information devices, and Xlets, which are programs that run on embedded devices.


C
Corv1nus

If I were you I would install the Java SE SDK. Once it is installed make sure you have the JAVA_HOME environment variable set and add the %JAVA_HOME%\bin dir to your path.


R
Rafa Viotti

Java SE is use for the desktop applications and simple core functions. Java EE is used for desktop, but also web development, networking, and advanced things.


V
Vishnu

EE:- Enterprise Edition:- This Java edition is specifically designed for enterprise applications/business where we have to deal with number of different servers with importance on security, transaction management etc.

SE:- Standard Edition:- This edition is for standard applications.

ME:- Micro Edition:- This java edition is specifically designed for mobile phone platforms. Where more importance is given on memory management as there is limited memory resources in mobiles .

So basically JAVA has different editions for different requirements.


u
user3064248

The SE(JDK) has all the libraries you will ever need to cut your teeth on Java. I recommend the Netbeans IDE as this comes bundled with the SE(JDK) straight from Oracle. Don't forget to set "path" and "classpath" variables especially if you are going to try command line. With a 64 bit system insert the "System Path" e.g. C:\Program Files (x86)\Java\jdk1.7.0 variable before the C:\Windows\system32; to direct the system to your JDK.

hope this helps.