Java Uygulama Sunucuları ve Tomcat Üzerine

Emrullah YILDIRIM
3 min readJun 16, 2020

--

Çoğu zaman web sunucusu ve uygulama sunucusu terimleri birbirinin yerine kullanılır. Genellikle, kurumsal uygulamaları çalıştırabilecek yetenekli ve hafif olan Tomcat Server (bir web sunucusu) örneğiyle kafamız karışabilir. Tomcat bir web sunucusu mu yoksa uygulama sunucusu mu? Gelin hep birlikte bu konuyu geniş bir perspektif ile tartışalım.

Birçok yazılım mühendisi, kodlarının çalıştığı altyapıya fazla odaklanmamaktadır. Web uygulamaları söz konusu olduğunda, web sunucusu ile uygulama sunucusu arasındaki farkın ne olduğu konusunda kafa karışıklıkları olabiliyor.

Geçmişten günümüze doğru, web uygulamaları geliştikçe, business logic uygulama sunucusunda kaldı, fakat kullanıcı arayüzü yavaş yavaş istemci makineye taşındı. Daha sonra Java uygulama sunucuları tanıtıldı ve bazı şeyler değişmeye başladı.

An application server is a software framework that provides an environment where applications can run, no matter what the applications are or what they do[1]. It is dedicated to the efficient execution of procedures (programs, routines, scripts) for supporting the construction of applications.

Wikipedia application server için yukarıdaki gibi bir tanım belirtmiş. Bu cümleleri baz aldığınızda tüm web sunucuları için aynı zamanda bir uygulama sunucusudur da diyebilirsiniz.

Biraz daha derine inmeden önce Hibernate ve JPA yazımı okumanızı öneririm çünkü burada J2EE spesifikasyonlarını ve implementasyonunu daha anlaşılır kılacaktır. J2EE uygulamasının bir dizi özelliği desteklemesi beklenir; bunlar bazıları aşağıda listeledim, ancak bunlarla sınırlı değildir:

  • JNDI capabilities
  • Enterprise JavaBeans (EJB) container and server
  • Java Transaction API (JTA) framework
  • Java Message Service (JMS) framework
  • J2EE Connector Architecture
  • EAR files
  • JavaMail
  • JavaServer Pages or JavaServer Faces
  • JAAS (Java Authentication and Authorization Service)
  • JAF (JavaBeans Activation Framework)
  • JPA (Java Persistence API)
  • JTA (Java Transaction API)
  • SAAJ(The SOAP with Attachments API for Java)
  • JDBC (Java Database Connectivity) Framework
  • JAXB (The Java Architecture for XML Binding)
  • JAX-RPC (The Java API for XML-based RPC)
J2EE uygulaması mimarisi

Basitçe söylemek gerekirse, J2EE spesifikasyonları bir dizi kurallardır. Bu nedenle, spesifikasyonlara uyması gereken tüm J2EE sunucularının, bu kuralları uygulayabilmesi gerekir. Gelgelelim Tomcat sunucusunun EJB desteği olması yani bir EJB container’a sahip olması gerekir. Peki Tomcat’in EJB desteği var mı? Yok. Tomcat J2EE standartlarında bir uygulama sunucusu değildir.

Kısaca;

Oldukça hafif ve çok karmaşık olmayan web tabanlı uygulamalar geliştirenler, uygulama sunucusu olarak Tomcat’i kullanabilirler. Fakat, bir nedenden ötürü bir veya birkaç kez Apache Tomcat’i daha karmaşık web tabanlı uygulamalarda kullanmaya çalışırken başarısız olan geliştiriciler, Tomcat’in Java EE spesifikasyonlarını karşılamadığını fark edip hüsrana uğrayacaklardır.

Kaynaklar;

--

--

Emrullah YILDIRIM

Kendine Blogger. Yazarak öğrenen, yazdıklarini paylaşan Java Software Engineer.