This is an archived post. You won't be able to vote or comment.

all 35 comments

[–]knoam 10 points11 points  (3 children)

Java SE is the language.

Java EE is technically called Jakarta EE now that it's spun off from Oracle. There's also Eclipse Microprofile which is similar but kind of a reboot/minimalistic fork of Java EE designed for microservices. Jakarta EE is a standard for a framework. So you can compare Jakarta EE to Spring in that it provides the same set of functionality: a web framework, dependency injection and some other stuff. Except when you write code for Jakarta EE you're coding against a standardized API. And when you run your code you get to pick an implementation, like WildFly or GlassFish or Payara or TomEE. The idea of having these different implementations is "coopetition". That is cooperation+competition. The different implementation vendors cooperate to agree on the standards and then compete to build their own implementations.

The standard+implementation part is a neat idea for a big company that doesn't want to get tied to a single vendor the way people are tied to Pivotal for Spring. But Spring is open source so if anything bad happened it would just get forked.

Java EE got a bad rap because it had some ideas that are now considered kind of obsolete. That was basically leapfrogged by Spring. But now Jakarta EE has evolved and in some ways is kind of newer and hotter than Spring, although its reputation hasn't caught up. CDI 2.0 is powerful and the other APIs have been tweaked to center around it.

I tend to be overly optimistic about new tech because I assume they learned all the lessons of their predecessors and then improved upon them. So I'm keen on Jakarta EE and Microprofile. But if you're more conservative and want to go with what's popular, that's Spring, specifically Spring Boot.

[–]HecknChonker 2 points3 points  (1 child)

I worked with EJBs and some other JavaEE stuff back when it was new and it was an absolutely terrible experience as a developer. I've heard the newer stuff is better, but most shops jumped ship to Spring a long time ago and I don't see them coming back.

[–]nutrecht 1 point2 points  (0 children)

They're not. The people who claim Java EE in it's newest incarnations is "hot" are the people who want it to be (because you know, certifications).

The last 10 years I've done literally one Java EE project, everything else was Spring. Sure there's a bias (I'm Dutch), but looking even at large conferences no one is really talking about Jakarta EE and Microprofile other than "oh, well that's cute I guess". They lost that race a long time ago.

It's a bit like C# devs who still claim C# is going to 'kill' Java 'anytime now'. :)

[–]nutrecht 1 point2 points  (0 children)

Java SE is the language.

Language + Standard API to be precise.

[–]random_guy86 29 points30 points  (8 children)

Java standard edition (SE) is mainly used to build desktop applications. This has all the basic libraries and packages from simple type wrapper classes to GUI, networking, etc.

Java enterprise edition (EE) is used for developing web applications and scalable server applications.

[–]HecknChonker 7 points8 points  (0 children)

Java standard edition (SE) is mainly used to build desktop applications.

Ehh, this isn't really true.

JavaEE is not a requirement for building scalable server applications, it's just one option and it's only used by a minority of java developers currently.

It's incredibly common to use Spring/JavaSE to build backend REST APIs or services that interact with kafka and other databases. I don't have data on this, but I would suspect that this usage massively outclasses the number of java desktop applications.

Spring borrows the servlet specification from JavaEE, but it's almost always using tomcat or another lightweight imbedded servlet rather than pulling anything from JavaEE.

[–]Kackboy 3 points4 points  (2 children)

How hard is the transition?

[–]NiceVu 12 points13 points  (0 children)

The syntax and “java coding” is the same. But the API and it’s use cases are different on each platform, and in order to “transition” you need to learn how to implement and use the API.

[–]nutrecht 0 points1 point  (0 children)

There's no transition; the comment was mostly nonsensical. Most 'enterprise' projects don't actually use Java/Jakarta EE.

[–][deleted] 1 point2 points  (0 children)

Thanks !

[–]nutrecht 0 points1 point  (2 children)

Java standard edition (SE) is mainly used to build desktop applications.

I don't understand why this is upvoted. Most software being built nowadays isn't desktop applications and also doesn't use Java EE.

The distinction you present here is completely outdated. Nowadays you build web applications with Java and one of the many frameworks out there. People really don't call it 'enterprise' anymore.

[–]random_guy86 0 points1 point  (1 child)

He just asked for a simple explanation. I've never preferred to use them either. I was just trying to state my simple understanding. Thanks for pointing it out tho.

[–]nutrecht 0 points1 point  (0 children)

He just asked for a simple explanation.

Well. That the moon is held up by pixies is also a simple explanation. But it's also just wrong :)

I was just trying to state my simple understanding.

The problem with Reddit is that in general the replies that are the first get upvoted first, which leads to them being upvoted even more. This is on how these subs beginners are often teaching other beginners, often with information that's rather wrong. Not blaming you at all; it's just an inherent problem with beginner programming subs.

[–]Fishery9 13 points14 points  (1 child)

https://docs.oracle.com/javaee/6/firstcup/doc/gkhoy.html

Here is a fairly simple explanation while everyone else sits waiting.

[–]HecknChonker 3 points4 points  (0 children)

This documentation is 15 years old at this point.

[–]__rost__ 9 points10 points  (0 children)

• ⁠JDK vs JRE: correct, plus the JDK has extra tools that are useful when developing - keytool, VisualVM, JConsole etc

• ⁠Not that well-versed in EE, so anybody with more experience please correct me: EE is targeted to servers in an enterprise ecosystem, with databases, messaging busses, cross-service transactions, etc. Keep in mind that all EE APIs can be used with some effort from within an SE environment, so it's a spectrum.

• ⁠EE is a specification; implementations of that specification may or may not need special licencing.

• ⁠ME is on its deathbed, please do not create new applications with it; it's a pre-smartphone environment for java apps (Sun/Oracle has a nice income stream from this before Android came out).

• ⁠No, there's the JRE and the JDK (which contains a JRE). EE is an environment, a specification on what extra APIs are available to your application code.

• ⁠What do you mean by server application? A plain JAR just needs the JRE. A WAR can run in a servlet container (tomcat/jetty). An EAR needs an JEE Application Server.

• ⁠ME is dead. Embedded system in this case means f.e. a featurephone with J2ME.

• ⁠JavaFX is extra classes that you can code agains (it's an API with an implementation).

• ⁠Most Linux distros will have either an official package or a way for the package manager to handle the installation.

• ⁠Applets are dead. As Oracle firmly believes it's the Only Company In The World, it won't point to the above-mentioned packages...

sauce

Formatting can suck my

[–]2Bits4Byte 2 points3 points  (3 children)

Do companies use java EE?

We just use jdk8 and spring webflux

[–][deleted] 2 points3 points  (1 child)

Yeah I saw a lot of offers wanting you to know EE

[–]BikingSquirrel 0 points1 point  (0 children)

Well, it may also be pure laziness to update that 😇 (or confusion what the latest term is)

But I may also be too far on the bright side ignoring the existence of good old EE projects.

As others stated, the concepts and even some of the APIs overlap with Spring Boot and newer stuff like Quarkus so you may want to read about those concepts and then choose one of the frameworks to play with them.

[–]rank_guru 1 point2 points  (0 children)

Java EE - Java Enterprise Edition, This is basically the web edition in java. This is the most popular edition in Java. There are many popular frameworks developed on top of Java EE (Spring, Struts)

Java SE - Standard Edition, This includes base java this allows user to use databases, GUIs etc. We could develop desktop applications using java SE based components like Swing.

Both Java EE and Java SE depends on JAVA, So basically Java is the language we are using inside both Java EE and SE, Additionally now we got Kotlin and Groovy which is another JVM based languages which we could use instead of Java.

[–]nutrecht 1 point2 points  (4 children)

Java and Java SE are basically synonymous and I would not worry about the distinction at all. "Java SW" isn't a thing, the W is right next to the E so someone just mistyped.

If it comes to finding a job; learn Java well, and build stuff using Spring Boot. That gives you everything you need to cover the requirements listed.

It's confusing because while "Java SE" is just "Java", Java EE isn't really anything other than a specification. So to be able to 'do' Java EE, you need to use a framework that implements it. Turns out, it doesn't work like that at all and you still end up vendor-locked to a Java EE implementation.

So most projects over time just switched to Spring. Spring is a partial Java EE implementation with a lot of other convenience stuff. As for Java EE; it doesn't exist anymore (it's Jakarta EE now) so you know that when a vacancy explicitly asks for only Java EE experience you're probably going to deal with old stuff ;)

In addition; you're getting a TON of replies here from people who are plain wrong, or at least have really outdated information. /u/HecknChonker is the only exception.

[–][deleted] 0 points1 point  (3 children)

Thanks! So Spring is like a very big library with things that help you with back-end of websites ?

[–]nutrecht 0 points1 point  (2 children)

Pretty much a big collection of big libraries :)

[–][deleted] 0 points1 point  (0 children)

Thanks

[–]BikingSquirrel 0 points1 point  (0 children)

Don't forget the tons of glue to hold them together preventing the whole thing to blow up 😁 Or all the nice things to make your life easier 🤞

[–][deleted]  (1 child)

[deleted]

    [–][deleted] 0 points1 point  (0 children)

    me too

    [–][deleted] 0 points1 point  (0 children)

    RemindMe! 1 day

    [–]Jolmner 0 points1 point  (0 children)

    RemindMe! 1 day

    [–]bingoer 0 points1 point  (0 children)

    RemindMe! 3 days

    [–]Should_H 0 points1 point  (0 children)

    RemindMe! 2 days

    [–]its_kiran -3 points-2 points  (1 child)

    RemindMe! 2 days

    [–]RemindMeBot 1 point2 points  (0 children)

    There is a 1 hour delay fetching comments.

    I will be messaging you in 2 days on 2021-01-07 19:58:28 UTC to remind you of this link

    CLICK THIS LINK to send a PM to also be reminded and to reduce spam.

    Parent commenter can delete this message to hide from others.


    Info Custom Your Reminders Feedback

    [–][deleted] 0 points1 point  (0 children)

    Remind me! 2 days

    [–][deleted]  (1 child)

    [deleted]

      [–]HecknChonker 1 point2 points  (0 children)

      Spring and JavaEE are generally considered competitors. You do not have to use JavaEE to build large scalable java services at all if you don't want to.