Serwery aplikacji internetowych napisanych w Java

Na jakich serwerach najczęściej stawia się aplikacje internetowe pisane w Javie? Tak jak w PHP dominuje Apache nie potrafiłem odnaleźć odpowiednika do Javy.

Jest ich dużo najczęsciej przezemnie spotykane to JBoss, Apache Tomcat i Glassfish.

Warto nadmienić, że Tomcat nie jest serwerem aplikacji. To tylko kontener na servlety. Ale jeśli ktoś go lubi warto się wtedy zainteresować TomEE, który jest referencyjną implementacją opartą o Tomcat’a.

Jetty jest kapitalny w czasie rozwijania aplikacji. Strasznie szybko się uruchamia i w przeciwieństwie do Tomcata pochłania malutkie ilości RAM-u. Z prawdziwych serwerów najprzyjemniej korzysta mi się z Glassfisha i WildFly (darmowa wersja JBossa).

 

  • jeżeli dorzucimy do kontenera serwletów parę jarów, śmiga na nim pełne EE. Ostatnio bawiłem się na czystym Tomcacie w EJB i CDI.

GlassFish chyba wydaje się solidnym produktem, bo jest rozwijany przez sam Oracle. Interesuje mnie jeszcze to czy napisany kod zadziała na większości w taki sam sposób czy może zdarzyć się sytuacja, że któryś serwer wykona go inaczej, lub w ogóle go nie wykona bo nie będzie potrafił? Właśnie o tym pisał @kostek135 w kontekście Tomcata?

W przypadku kontenera, to tak naprawdę nie wiadomo:

jeśli przykładowo dostawca powie, że implementacja dajmy na to servletów, jest referencyjna do 3.0, to wszystko z 3.0 powinno działać. Ale może też powiedzieć, że jest wszystko poza jakąś częścią.

W przypadku serwera ee, wszystko co jest przewidziane w standardzie będzie zachowywać się na każdym serwerze tak samo.

Oczywiście nie mówimy tu o programistycznych błędach osób dostarczających serwer aplikacji, bo to zawsze jest możliwe, ale takie coś wystarczy zgłosić na jakiś ichniejszy bug-tracker i jeśli jest to zasadne prawdopodobnie zostanie naprawione.

Ogólnie bardziej niż coś zadziała inaczej, należy się spodziewać, że nie uda ci się tej funkcjonalności dołączyć jako zależności i prawdopodobnie zakończy się błędem kompilacji, bądź w runtime, trakcie inicjowania serwera.

W moim odczuciu. Jeśli zaczynasz z EE, w pierwszym etapie lepiej zacząć od Tomcata/Jetty i liznąć coś na temat Servletów i JSP. Potem jak będziesz chciał robić ciekawsze rzeczy to trzeba się zastanowić, czy robić przesiadkę na na coś wspierającego EJB, WebService’y, JMS, JMX, CMP, sru-tututu. Czy może będziesz używał jakiegoś frameworka, który też jest popularny, pomimo że nie jest wypracowany jako standard (Spring, przykładowo)

[edit]

@Frankfurterium

Uruchomiłeś to tak, że trwałością ziaren zarządzał Tomcat (CMP), a nie ty ręcznie przez JPA? I tak jakoś na produkcji chyba bym się nie odważył…

 

W EJB od wersji trzeciej nie używa się entity beanow. Pod spodem miałem JPA w implementacji ObjectDB. Wszystko chodziło naprawdę fajnie, ale jak wspomniałem, to była zwykła zabawa.