CGI ve Servlet Arasındaki Fark
olanakları kullanmasına izin verir. CGI (Ortak Ağ Geçidi Arabirimi), kullanıcılara dinamik içerik sağlamanın ilk girişimidir. Kullanıcıların, ilgili içeriği üretmek için verileri işlemek ve hatta veritabanlarına erişmek için sunucudaki bir programı yürütmesine izin verir. Bunlar programlar oldukları için, yerel işletim sisteminde yazılmış ve daha sonra belirli bir dizinde saklanmıştır. Bir servlet, CGI'nın yaptığı gibi bir hizmet sunmayı amaçlayan bir Java uygulamasıdır, ancak yerli işletim sisteminde derlenmiş programlar yerine Java sanal makinesinde çalıştırılan Java bayt kodu derleyicidir. Java programları yerli kod içine derlenebilmesine rağmen yine de Java bayt kodunda derlemeyi tercih ederler.
Servletlerin CGI üzerindeki ilk avantajı platform bağımsızlığındadır. Servletler, bir JVM yüklendiği sürece herhangi bir işletim sisteminde çalışabilir; bu da işletim sistemlerini değiştirmeyi seçerseniz bile sorun yaşamayacağınız anlamına gelir. CGI ile işletim sistemini değiştirme, zor ve zahmetli bir işlemdir, çünkü programları yeni işletim sisteminde yeniden derlemeniz gerekir.
CGI'da bağımsız programlar çalıştırdığımız için, çalıştırıldıklarında kendi süreçlerini oluştururlar; servlet'lerle gerçekleşmeyen şeyler JVM'nin bellek alanında paylaşırlar. Bu, özellikle kullanıcı sayısını katlanarak artırdığınızda, yük ile ilgili sorunlara yol açabilir. Ayrıca, sunucu sunucuda çalıştırıldıktan sonra program herhangi bir şekilde denetlenmediği için güvenlik açığı sorunları da oluşturur.
Daha sonra, CGI kullanırken daha yaygın olan yöntem betiklerle yapılır. Bu, programlar oluşturmak için gereken zamanı azaltır ve genellikle daha güvenlidir. CGI ile, hemen komut dosyalarını çalıştırabilirken, servletlerken, komut dosyasını Java'ya çevirmeniz ve onu yükleme zamanı biraz ekleyen bir servlet içine derlemeniz gerekir.
Özet:
1. CGI genellikle sunucunun işletim sistemine özgü yürütülebilir kaynaklardır, ancak servletler yerel işletim sisteminde derlenebilir ve sonra Java bayt kodu ile derlenebilir ve JVM
2'de çalıştırılabilir. Servletler platformdan bağımsız olarak CGI programları platform bağımlıdırlar
3. Servletler JVM
4'te çalışırken CGI programları bilgisayarda ayrı işlemler olarak çalışır. CGI, servletlerden daha saldırılara karşı daha savunmasız olabilir
5. CGI, bir servlet olarak çalıştırılmadan önce komut dosyalarını doğrudan çevirebilir ve derleyebilir.