Perbedaan antara Apache HTTP Server dan Apache Tomcat? [Tutup]

637

Apa perbedaan dalam hal fungsi antara Apache HTTP Server dan Apache Tomcat?

Saya tahu bahwa Tomcat ditulis dalam Java dan HTTP Server dalam C, tetapi selain itu saya tidak benar-benar tahu bagaimana mereka dibedakan. Apakah mereka memiliki fungsi yang berbeda?

kaybenleroll
sumber
12
Saya telah menambahkan ringkasan di blog saya, mungkin itu membantu seseorang: tugay.biz/2014/11/what-is-tomcat-is-it-web-server-what.html
Koray Tugay
36
Saya bertanya-tanya persis apa yang diminta OP, dan saya tidak mengerti mengapa OP itu ditutup. Untungnya ada jawaban.
Florian F
4
Server web Apache dan Apache Tomcat adalah dua alat berbeda yang disetel untuk tujuan yang berbeda. Jika kita tidak bisa lagi membedakan kasus penggunaannya dengan fakta dan keahlian maka kita sampai pada keadaan menyesal. Dorongan untuk menutup pertanyaan "argumentatif" ini telah melampaui batas. Mungkin moderator perlu lebih banyak informasi dan lebih sedikit pendapat. Seperti yang dikatakan @FlorianF, setidaknya ada jawaban sekarang.
NeilG
2
Mengingat jumlah upvotes - ini seharusnya tidak ditutup - tetapi harus dikunci - karena ini sebenarnya pertanyaan yang sangat bagus dengan jawaban yang berguna.
simbro
The closedpemberitahuan Pertanyaan ini mengatakan itu membutuhkan Jawaban untuk memiliki konten obyektif, tetapi mengharapkan Pertanyaan ini bukannya akan menghasilkan konten Jawaban subjektif - mayoritas Jawaban tampaknya berisi konten tujuan (terutama yang lebih tinggi-sebagai Jawaban) daripada subjektif - jadi pertanyaan ini harus UN-TUTUP. Ketakutan akan subjektivitas tidak pernah benar-benar terjadi, dan saya tidak setuju bahwa Pertanyaan itu pernah berisiko menjadi subyektif.
cellepo

Jawaban:

475

Apache Tomcat digunakan untuk menggunakan Java Servlets dan JSP Anda. Jadi, dalam proyek Java Anda, Anda dapat membuat file PERANG (kependekan dari Web ARchive), dan cukup taruh di direktori deploy di Tomcat.

Jadi pada dasarnya Apache adalah Server HTTP, melayani HTTP. Tomcat adalah Servlet dan JSP Server yang melayani teknologi Java.

Tomcat termasuk Catalina, yang merupakan wadah servlet. Servlet, pada akhirnya, adalah kelas Java. File JSP (yang mirip dengan PHP, dan file ASP yang lebih lama) dihasilkan ke dalam kode Java (HttpServlet), yang kemudian dikompilasi ke file .class oleh server dan dieksekusi oleh mesin virtual Java.

Bernie Perez
sumber
51
Apa yang Anda maksudkan dengan "Apache adalah [...] melayani HTTP"? Bukankah Tomcat juga melayani HTTP (alias hypertext)? Mengapa Tomcat tidak bisa sekadar menjadi modul Apache "mod_java"? Bisakah Anda jelaskan?
Peterino
30
Tomcat adalah wadah servlet. Servlet, pada akhirnya, adalah kelas Java. File JSP (yang mirip dengan file ASP PHP oder) dihasilkan ke dalam kode Java (HttpServlet), yang kemudian dikompilasi ke file .class oleh server dan dieksekusi oleh mesin virtual Java. - Selain itu, forum ini di sini menjelaskan perbedaan antara Apache HTTPD dan Tomcat dengan cukup baik: coderanch.com/t/85182/Tomcat/…
Peterino
17
Tomcat memang membawa server web yang mumpuni. Tomcat adalah wadah Servlet / JSP dan juga menawarkan server web. Server web Tomcat cukup baik, mampu menangani sebagian besar kebutuhan situs web kecil dan menengah. Dengan dukungan Java NIO dan memori 64-bit, bahkan beberapa situs web berskala lebih besar dapat dilayani dengan baik oleh modul Catalina Tomcat. Karena berbagai alasan, beberapa orang memilih untuk mengabaikan Catalina dan sebagai gantinya menggunakan kemampuan Servlet Tomcat di belakang httpdproduk server web Apache .
Basil Bourque
21
Koreksi komentar saya: Coyote adalah modul di Tomcat yang bertanggung jawab untuk penyajian web. Catalina adalah modul yang melakukan Servlets. Jasper adalah modul yang menangani JSP.
Basil Bourque
17
@ KorayTugay Ya. Tomcat = ( Web Server + Servlet container + JSP environment ). Server web AKTIF secara default ketika Anda menjalankan startup.shskrip Tomcat , mendengarkan pada port 8080 untuk koneksi masuk (panggilan HTTP). Tomcat adalah Java murni, dengan implementasi server web sendiri (Coyote). The Apache HTTP Server (AHS), sebaliknya, memiliki implementasi benar-benar terpisah dari web server, menggunakan C / C ++ kode asli. AHS sangat fleksibel dan kuat, tetapi seringkali berlebihan. Server web Tomcat sendiri berfungsi dengan sangat baik. Gunakan AHS hanya jika benar-benar dibutuhkan.
Basil Bourque
118

Selain jawaban yang baik di atas, saya pikir harus dikatakan bahwa Tomcat memiliki server HTTP sendiri di dalamnya, dan berfungsi penuh untuk menyajikan konten statis juga. Bergantung pada konfigurasi mesin virtual java Anda, itu sebenarnya dapat mengungguli melalui konektor tradisional di apache seperti mod_proxy dan mod_jk.

Yang mengatakan server Tomcat sepenuhnya dioptimalkan harus melayani file statis dengan cepat dan jika Anda memiliki file servlets Java, JSPs dan ColdFusion selain konten statis Anda mungkin menemukan tomcat melakukan pekerjaan yang sangat baik dengan sendirinya.

ethyreal
sumber
3
Benar. Dan banyak orang masih menggunakan setup Apache tambahan selain Tomcat mereka .. yang pada umumnya tidak diperlukan.
Marco Schoolenberg
6
Bagian paling kuat dari apache http yang didukung beberapa server lainnya adalah kemampuan untuk mengubah rute dan menulis ulang permintaan sebelum aplikasi harus melihatnya, yaitu melalui mod_rewritemesin dan injeksi lingkungan bersyarat. mod_proxymenyediakan penyeimbangan beban yang belum sempurna (dan dikombinasikan dengan mod_jk menyediakan sesi lengket yang belum sempurna / keadaan bersama antara instance tomcat dengan beban seimbang).
cowbert
81
  1. Apache adalah server http untuk tujuan umum, yang mendukung sejumlah opsi lanjutan yang tidak dimiliki Tomcat.
  2. Meskipun Tomcat dapat digunakan sebagai server http tujuan umum, Anda juga dapat mengatur Apache dan Tomcat untuk bekerja bersama dengan Apache yang menyajikan konten statis dan meneruskan permintaan konten dinamis ke Tomcat.
Satish Dhiman
sumber
Bukankah semua web itu statis pada akhirnya? Pemahaman saya adalah, Tomcat menghasilkan "a" konten statis (secara dinamis) maka Apache akan melayani ini. Jadi Tomcat tidak akan pernah benar-benar menyajikan konten dinamis atau apa pun, itu hanya akan menghasilkannya saat diperlukan.
Koray Tugay
11
@ KorayTugay Anda mengacaukan persyaratan Anda. "Hasilkan ketika diperlukan" adalah persis apa yang "dinamis" berarti, dan sangat kebalikan dari "statis". Tujuan utama dari Apache HTTP Server adalah untuk menyajikan konten statis, sedangkan tujuan utama dari teknologi Servlet adalah untuk menghasilkan konten on-the-fly (konten dinamis).
Basil Bourque
1
@BasilBourque Saya bingung dengan Tomcat yang sebenarnya menyajikan konten di sini. Itu hanya akan menghasilkan konten, itu tidak akan menayangkannya ketika digunakan bersama dengan Apache Http Server. Mungkin Anda benar dan saya hanya bingung tetapi bagi saya, saya masih akan mengatakan, ketika digunakan bersama, Apache berfungsi, Tomcat menghasilkan konten statis saat diperlukan. Jika bukan Apache yang digunakan, Coyote di Tomcat akan melakukan penyajian, sementara Catalina dan Jesper menghasilkan konten dinamis.
Koray Tugay
3
@ KorayTugay Ya, komentar terakhir Anda sudah benar. Jika menggunakan Apache HTTP Server + Tomcat, maka browser web hanya "melihat" AWS tanpa petunjuk bahwa Tomcat bekerja di balik tirai. AWS adalah perantara antara klien browser web dan Tomcat. Jika menggunakan Tomcat sendiri, maka modul Coyote di Tomcat menggantikan AWS untuk mengirimkan permintaan dari klien browser web. Saya merekomendasikan yang terakhir (Tomcat saja) kecuali Anda tahu Anda memiliki kebutuhan yang sangat khusus yang akan lebih baik ditangani oleh AWS.
Basil Bourque
29

Tomcat terutama merupakan server aplikasi, yang melayani permintaan untuk Java servlets atau file JSP yang dibuat khusus di server Anda. Ini biasanya digunakan bersama dengan server HTTP Apache (setidaknya dalam pengalaman saya). Gunakan untuk memproses permintaan masuk secara manual.

Server HTTP, dengan sendirinya, terbaik untuk menyajikan konten statis ... file html, gambar, dll.

levand
sumber
9
Saya meragukan Tomcat is primarily an application serverpernyataan.
Rachel
6
tomcat terutama dimaksudkan sebagai server aplikasi. meskipun tidak konten statis server juga.
Scalable
4
Ya Tomcat memang terutama merupakan server aplikasi, jika istilah tersebut dimaksudkan dalam arti wadah Servlet yang menghasilkan konten dinamis yang dikirim ke browser web. Sebagai salah satu wadah Servlet pertama, itulah alasan keberadaan Tomcat.
Basil Bourque
1
tomcat bukan server aplikasi, ini adalah server web. javajee.com/web-server-web-container-and-application-server
Prateek Mishra
@PrateekMishra Berdasarkan tautan yang Anda berikan, pernyataan Anda bahwa tomcat adalah server web salah; itu (terutama) wadah web , juga dikenal sebagai wadah servlet .
skomisa
21

server apache adalah server http yang dapat melayani permintaan http sederhana, di mana server tomcat sebenarnya merupakan wadah servlet yang dapat melayani permintaan servlet java.

Server web [apache] memproses permintaan klien web (browser web) dan meneruskannya ke servlet container [tomcat] dan kontainer memproses permintaan dan mengirimkan respons yang akan diteruskan oleh server web ke web browser [browser].

Anda juga dapat memeriksa tautan ini untuk klarifikasi lebih lanjut: -

https://sites.google.com/site/sureshdevang/servlet-architecture

Periksa juga jawaban ini untuk penelitian lebih lanjut: -

https://softwareengineering.stackexchange.com/a/221092

garis
sumber
sites.google.com/site/sureshdevang/servlet-architecture Seperti yang Anda jelaskan ini berikan pandangan yang lebih baik
Akitha_MJ
13

Jika Anda menggunakan teknologi java (Servlet / JSP) untuk membuat aplikasi web, Anda mungkin akan menggunakan Apache Tomcat. Namun, jika Anda menggunakan teknologi lain seperti Perl, PHP atau ruby, lebih baik (lebih mudah) menggunakan Apache HTTP Server.

vishal
sumber
9
Jawaban ini tidak masuk akal bagi saya. Kalimat pertama salah karena ada banyak wadah Servlet / JSP lain selain Tomcat, beberapa cukup populer seperti Jetty, JBoss / Wildfly, Glassfish, WebSphere, dan banyak lagi. Meskipun populer, Tomcat tidak mendominasi, dengan hanya sebagian kecil pangsa pasar. Adapun kalimat kedua, Tomcat sering digunakan sebagai wadah Servlet di belakang Apache HTTP Server. Dan PHP dll. Sering digunakan dengan beberapa Server web lain seperti Nginx, Lighttpd, dan lainnya.
Basil Bourque
3

Nah, Apache adalah server web HTTP, sedangkan Tomcat juga server web untuk Servlets dan JSP. Apalagi Apache lebih disukai daripada Apache Tomcat secara real time

Yadul
sumber
19
Pertanyaan ini cukup lama, dan jawaban Anda tampaknya menduplikasi jawaban yang sudah diposting sebelumnya. Jawaban dihargai tetapi jawaban baru harus membantu menambah percakapan.
GargantuChet
-2

Apache adalah server web HTTP yang berfungsi sebagai HTTP.

Apache Tomcat adalah wadah java servlet. Ini fitur yang sama seperti server web tetapi dikustomisasi untuk menjalankan halaman java servlet dan JSP.

Karthikeyan
sumber
1
ya jawaban agak membingungkan karena @ Basil Bourque mengatakan di atas "Coyote adalah modul di Tomcat yang bertanggung jawab untuk melayani web, Catalina adalah modul yang melakukan Servlets. dan Jasper adalah modul yang menangani JSP" sekarang memberikan kejelasan tentang bagaimana "FITUR TOMCAT Sama sebagai server web yang disesuaikan untuk mengeksekusi java servlet dan halaman JSP !!!! "
Dev