Please help me deal with the java structure: I saw the following separation: enter image description here The following questions arose:

1) Did I understand correctly that Java Core and Java SE are not the same thing? Always thought it was the same thing.

2) How, then, to distinguish what is included in Java Core, and what in Java SE? For example, where are the exceptions included? BigInteger, BigDecimal? Well, these are specific examples, and I would like for any example to learn to distinguish

3) I was surprised that JavaFX is highlighted separately. Still, more traditionally divided into Java Se, Java EE, Java ME. Where does Java FX apply to this separation?

4) How to distinguish when my program corresponds to Java Se, and when does Java EE become? I understand this for myself: in Java EE, everything that exists in Java Core and Java SE can be present, but when technologies such as JSP, JSF, Hibernate, etc. appear. This becomes Java EE.

5) Where do things like Tomcat, Spring go? I did not find them in the list of Java EE technologies, but this is clearly not similar to Java SE.

6) What is the place among all this, and how does Java Android interweave in general?

  • For completeness, it is worth adding a JavaCard runtime for execution on smart cards. - Nofate
  • And still it is possible to remember GWT (we write both the client and the server in Java) - avp
  • @avp, and yes and no. This is still a third-party translator + emulator of a limited set of Java SE, and not a specification in contrast to the rest of the diagram. - Nofate
  • @Nofate, this diagram is just a reason to talk (hardly in a similar question (the author seems to be interested in the general picture) if she is limited) - avp

2 answers 2

  1. Personally, I don’t see much technical difference between the java core and se. Reference to Java SE Core Technologies . Unless the terms are used in different contexts. Java core usually written in vacancies and implies a basic knowledge of the language. Knowledge of data types, syntax, etc. Java SE refers to command-line applications. This is very general, perhaps they will correct me ..

  2. And why do you need to distinguish it at all?) Well, actually, see paragraph 1.

  3. About Java SE wrote above. Java ME is an outdated mobile platform. Remember toys on nokia and siemens? Java EE is, first of all, a set of specifications for the development of large applications (roughly speaking, the web ), and not specific classes. For example, Enterprise JavaBeans or webboxes. Java FX - standalone GUI applications (swing is not included in FX)

  4. Again, wrote above. Java EE applications are deployed in a servlet container (tomcat) or application server (glassfish, jboss). Java SE run simply on the local machine.

  5. Tomcat-container servlet. Spring is a framework offering some alternative to java ee . Those. If, according to the java ee specification, some problem can be solved using EJB , then spring provides its own approach. And the developer himself has the right to decide what suits him better.

  6. Android , you can probably select as separately as EE , ME , SE . Those. for the development of android has its own specifications, approaches and platforms.

  • one
    I note that Java ME is not only toys for older siemens, but also a platform for embedded devices, which is well developed. - Nofate
  • @Nofate, is it just a reuse of the name, or can it be used to make crafts for it? - zRrr
  • @zRrr, Sun / Oracle respects backward compatibility. - Nofate

1-2) Java core is an apparently outdated name for what is called Lang and Util Base Libraries and Other Base Packages in this scheme . If you look at the Java Se 6 documentation, it refers to the list of Base Libraries , that is, you can assume that Java core == Base Libraries. But by and large this knowledge is of little use.

3) An interesting question, look for this scheme Java Fx is not part of the Java SE API, but is included in the JDK and in general is still part of the Jave SE Platform.

4) See Java EE is basically a set of interfaces that other providers implement. Java EE is not included in the JDK and you need to add these classes separately. In fact, the main criterion is not that Java EE applications are deployed in a servlet container or application server, but using Java EE interfaces. However, this is all very blurry, since JPA interfaces (on which Hibernate is based) or Dependency Injection does not use just lazy or Hello world applications. For good, clean Java SE applications are almost gone, on the other hand, real Java EE are huge monsters on weblogic or websphere. For simplicity, while you have a small application using Java EE slightly (like Hibernate), you can assume that you have Java SE with a small amount of EE as soon as it turns into an Enterprise monster - pure EE.

5) Here is a difficult question on the one hand Spring supports EE interfaces and is integrated with many EE solutions: JSP, Dependency injection standard, JPA, Hibernate, and more. Moreover, the project site says "Let's build a better Enterprise.", That is, first of all, this is an Enterprise solution. On the other hand, no one bothers to use Spring without bundles with EE technologies or a minimum of such technologies. Moreover, you can consider Spring as a competitor to Java EE, as a symbiosis with Java EE or as part of Java EE solutions, everything depends on each individual case. So it can be said that Spring is both an EE and SE solution, like a hammer that can be used to build a skyscraper, or it can be used to fix a barn.

6) Hmm, Java Android is a separate place in general, Google took the Java language specification and made its JVM and its language, it is generally compatible with the rest of Java, but not completely. Orakl long tried to sue Google for using Java. So Android is a completely different world, not very much connected with Java SE or EE.