Struts vs Struts2
Struts (Apache Struts veya Struts 1 olarak da bilinir), Java EE web uygulamaları geliştirmek için tasarlanmış, Java ile yazılmış, platformlar arası bir açık kaynak çerçevesidir. İlk Java EE web uygulaması çerçevelerinden biriydi. Ancak birkaç yıl sonra Struts2 (veya Struts sürüm 2) geldi ve tamamen farklı ve oldukça gelişmiş bir web uygulaması çerçevesiydi. İlk sürümde eksiklikler olarak algılanan birkaç sorunu ele almıştı. Şimdi, Struts2 dünyada Java EE uygulamaları geliştirmek için çok yoğun bir şekilde kullanılıyor.
Struts nedir?
Struts (Struts 1) çerçevesi, Java EE web uygulamaları geliştirmeye yönelik ilk web uygulaması çerçevelerinden biriydi. Struts çerçevesi, MVC (Model-View-Controller) mimarisinin kullanımını teşvik eder. Java Servlet API'sinin bir uzantısıdır. Craig McClanahan, Struts'un orijinal yaratıcısıdır. Başlangıçta Jakaratha Struts olarak biliniyordu ve Apache Software Foundation'ın Jakarta Projesi kapsamında sürdürüldü. Apache Lisansı 2.0 altında yayınlandı. Struts çerçevesine istek tabanlı çerçeve denir ve üç ana bileşenden oluşur: istek işleyici, yanıt işleyici ve etiket kitaplığı. Standart URI (Tekdüzen Kaynak Tanımlayıcı), bir istek işleyicisine eşlenir. Yanıt işleyici, kontrolün aktarılmasından sorumludur. Formlarla etkileşimli uygulamalar oluşturmak için etiket kitaplığının sunduğu özelliklerden yararlanılabilir. Destekler, REST uygulamalarını ve SOAP, AJAX vb. gibi çeşitli teknolojileri destekler.
Struts2 nedir?
Struts çerçevesinin o dönemde Java EE geliştiricileri tarafından belirli sınırlamalar (esas olarak sunum katmanı, istek işleme katmanı ve model arasındaki ayrım eksikliği) içerdiği algılandı ve sonuç olarak birkaç yıl sonra Struts2 geldi. Aslında Struts2, Struts'tan tamamen farklıydı. Aslında, aynı kod tabanını bile paylaşmıyorlardı çünkü Struts2, WebWork 2.2 çerçevesini yeniden adlandırmanın bir sonucuydu (yani, bir süre ayrı çalışan WebWork ve Struts toplulukları, nihayetinde Struts2'yi bulmak için el ele verdiler). Mevcut kararlı sürümü, Mayıs 2011'de yayınlanan 2.2.3 sürümüdür.
Struts ve Struts2 arasındaki fark nedir?
Struts çerçevesinin birçok probleminden biri, arayüzler yerine soyut sınıflara programlama ihtiyacıydı. Bu, Struts2 çerçevesi tarafından çözüldü. Örneğin, Struts çerçevesi, Action sınıflarının soyut temel sınıflardan genişletilmesini gerektiriyordu, ancak Struts2 Actions, bir Eylem arabirimi uygulayabilir. İki sürüm arasındaki iş parçacığı modelindeki farklılıklar nedeniyle, Struts çerçevesinde Action nesneleri ile ilgili olarak ortaya çıkan iş parçacığı güvenliği sorunları Struts2 çerçevesinde oluşmaz. Bunun nedeni, Struts2 Action nesnelerinin her istek için somutlaştırılırken, Struts çerçevesindeki bir Action, o Action için tüm istekleri işlemek için yalnızca bir örneğe sahip olmasıdır. Actions in Struts çerçevesinden farklı olarak Struts2 Actions, Servlet API'sine bağlı değildir.
Struts2 çerçevesinin test edilebilirliği, Struts çerçevesinden nispeten daha yüksektir. Struts2 Actions'ı şu üç adımı izleyerek test edebilirsiniz: örnekleme, özelliklerin ayarlanması ve yöntemlerin çağrılması. Eylem özellikleri, ikinci bir girdi nesnesi tutmak zorunda kalmadan girdi özellikleri olarak kullanıldığından, Struts2 çerçevesinde girdi toplamak daha kolaydır. (Struts'ta bulunan) JSTL entegrasyonu desteğinin yanı sıra, Struts2 çerçevesi daha güçlü ve anlamlı OGNL (Object Graph Notation Language) kullanabilir. Tür dönüştürme için Strut ve Strut2, sırasıyla Commons-Beanutils ve OGNL'yi kullanır. Bu iyileştirmeler nedeniyle, Struts2 çerçevesi oldukça olgun bir çerçeve olarak kabul edilir ve Java EE programcıları arasında çok popülerdir. Öte yandan, Struts çerçevesi artık modası geçmiş olarak kabul ediliyor.