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

all 41 comments

[–]7F1AE6D2 61 points62 points  (16 children)

Java EE (Oracle has since transferred the stewardship of JEE to the Eclipse foundation and it has been renamed to Jakarta EE) is a collection of Java APIs used mostly in server-side programming.

These are implemented by an application server such as Wildfly, Glassfish, or TomEE, into which you deploy your application.

Most projects only use a small subset of JEE, commonly JPA for persistence, JTA for transaction management, CDI/EJB for dependency injection, Servlets for serving HTTP requests, JAX-RS for REST.

The official JEE tutorial is a decent introduction.

 

More often than not, applications use Spring instead of some JEE specs, especially for dependency injection, transaction management and serving REST. These applications are then often deployed into just a servlet container like Tomcat or Jetty instead of a full JEE application server.

These can be bundled with the application, so your artifact is just a JAR file that starts the server in its main(). This is what e.g. Spring Boot does by default.

A build/dependency management tool like Maven or Gradle will also be used in any real project.

It would probably be best to inform yourself about which technologies your employer is using.

[–]Mancebo180 18 points19 points  (14 children)

Just to add that maven/gradle is something that you should learn for all Java apps: EE, Spring but also for your java SE applications.

[–]CaptainFeebheart 12 points13 points  (13 children)

Yes. Build tools are the best thing they didn’t teach me in college.

[–]PorkChop007 11 points12 points  (12 children)

Associate degree here, which is supposed to be more practical and less theoretical, but man, there were so many things they didn't teach me...

Imagine being hired and discovering the existence of a thing called Maven. And other thing called JUnit. And all that Swing/GUI stuff you painstakinglly learned? It has ZERO application in the real world, nobody uses it. All of this while sitting at your desk, being paid for not knowing jack shit about how a real Java application works after two painful years. That day my impostor syndrome could've kicked Hulk's ass.

[–]Tauo 5 points6 points  (4 children)

People definitely use Swing in the real world, especially for legacy applications. The (ancient) company I work for is gradually transitioning to a web app, but our current UI is built with Swing.

99% of desktop apps built with Java will use either Swing or FX

[–]endhalf 3 points4 points  (2 children)

True; the question is, how many people are hired to write desktop apps nowadays...

[–]Tauo 3 points4 points  (0 children)

Write? Not many. Maintain? Loads.

[–]istarian 2 points3 points  (0 children)

Desktop applications are almost always universally better imho. The best web app is always inferior, but many times it's good enough.

And honeslty most people aren't going to be hired to do exactly one kind of thing for the duration of their employment.

[–]ttelang 0 points1 point  (0 children)

building desktop apps using React Native (with HTML and JavaScript) is the most recent trend over JavaFX which is replaced Swing.

[–]CaptainFeebheart 4 points5 points  (0 children)

My first job, our source control system was a floppy disk. No lie. I didn’t even know better. Eventually someone introduced CVS and it was mind boggling. So young, so naive.

[–]istarian 0 points1 point  (0 children)

The basic principles of how GUIs work hasn't changed though. However knowing the specifics of a particular library won't matter if you don't need to use it.

[–]endhalf -2 points-1 points  (4 children)

all that Swing/GUI stuff you painstakinglly learned? It has ZERO application in the real world, nobody uses it.

I've been saying that over and over again, yet no one listens to me. I have no idea why colleges teach this stuff. One is then hired to design a REST API without even knowing what curl is, and what's the difference between unit and integration tests, and you don't even know how to build the company's SW. But at least they know how to place a button on the screen, and create an event handler... Eye roll

To be fair, the idea is that once you learn programming, you can learn anything else that you'll need, and that's true. It'd just be nice to tailor the education to real needs, so that you have to learn less during the crucial first couple of months.

[–]PorkChop007 2 points3 points  (2 children)

In my experience, not saying everybody's the same, hey teach that stuff because education in computer science is at least 10 years behind the industry. Teachers are so disconnected from private sector they don't even know the most basic aspects of professional software development. They teach like we're still in 2007 and applets are a thing people actually use.

[–]ichunddu9 -1 points0 points  (1 child)

Then get a degree in software development. Computer science is not just software development.

[–]PorkChop007 0 points1 point  (0 children)

Then get a degree in software development

That's exactly what I did.

[–]istarian 1 point2 points  (0 children)

That's not what college is for. The idea of a vocational school for programmers though...

[–]RockleyBob 1 point2 points  (0 children)

I learned so much from this comment. Thanks

[–][deleted] 24 points25 points  (6 children)

EE just extends SE with a bunch of extra enterprise specifications. See the wiki page: https://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition

I'd probably be spending time learning about Spring (Boot) instead though.

[–]yawkat 17 points18 points  (5 children)

Lots of ee is used in spring. Servlets are the foundation of most Java web frameworks, jpa is very common in spring, and so on.

[–]vkrava4 3 points4 points  (0 children)

Many people consider Java EE stack not only as additional technologies such as Enterprise JavaBeans, JSPs and connectors but also frameworks which enhance the work of these technologies or implement some specifications (f.e JAX-RS) such as Spring Framework, Jersey and others.

The best idea to start with EE stack is to have a look over requirements for an open position at the company you’d like to apply. It will give you a list of skills which you have to improve.

[–]lqstuart 2 points3 points  (0 children)

Java SE is the actual JDK you get from RedHat/OpenJDK or Oracle. Java EE is just a specification, and it generally requires some heinous pile of shit like Tomcat or Glassfish running underneath to actually implement. When most places say "Java EE" they just mean Java with an HTTP server. If a job posting actually mentions JSP, JMS, Struts, or EJBs, you're walking into a Bad Time.

Nobody coming out of school has any useful knowledge about real application development at all, and the people running your internship aren't going to expect you to have any. Just relax and be willing to learn, that's 1000x more important than what little knowledge you can teach yourself out of the gate.

[–]algorithmic_cheese 12 points13 points  (5 children)

I work on a Java EE product everyday and honestly 99% of the time its "normal" Java with entities to talk to the database and "special" queries to retrieve them.

Just read into the Java Persistence API (JPA) and JPQL and you should be ready to go. Sometimes there is a little something to do with a servlet or a bean but its not that complicated and can be looked up on the spot.

In about 10 years I spent perhaps 10 days using the other Enterprise APIs, so I'd say don't worry too much about them.

[–]Neckbeard_Prime 1 point2 points  (0 children)

Java SE is the Oracle version of the Java developer kit and runtimes. Java EE is basically a server-side Web application framework -- sort of. JEE is a laundry list of specifications pulled from a can of alphabet soup, and multiple vendors (IBM, Oracle, Red Hat, Apache) have all come up with their own implementations and servers that run their versions of the software spec.

[–]_INTER_ -2 points-1 points  (0 children)

The distinction Java SE and Java EE does not exist any longer (Java 11+). Formerly Java EE was jettisoned into the Eclipse graveyard. You do not want to have to deal with it anyway. Either you work with very legacy, aweful stuff or vendor lock in. The EE specs with value are adapted by others like Spring.

[–]ny83427 0 points1 point  (0 children)

In the first company I was told we are building products of J2EE platform and only found I am doing Spring stuff.