Google, Amazon veya LinkedIn modern midir?
Java, modern web uygulamaları için kullanılır. Kurumun karşısına bakarsanız, web uygulamaları için en yoğun kullanılan dildir (dahili).
Bu, Java'nın bir dönemden geçtiğini, web geliştirme standartlarının herkese her şey olmaya çalıştığını söyledi (tartışmasız hala yapıyorlardı). "Kendini tekrar etme", Java web geliştirme sürecinin xml cehennemine ve uzun süren döngüsüne verilen bir cevaptı. Sonuç olarak, Java (EJB, Struts, JSF, vb.) Tüm yeni paradigmaların üstesinden gelmeye çalıştığı şey olarak ortaya çıktı.
Java, dil ayrıntılı. Bu bir profesyonel ve bir aleyhte (bakım için harika, dev için berbat). Kodlama zamanını büyük ölçüde azaltabilen (özellikler, olaylar, kapanışlar, jeneratörler, liste kavramaları, vb.) Henüz Java ile yapmayan bir dizi modern dil özelliği vardır. Dolayısıyla, daha modern bir dilden gelince sinir bozucu olabilir. Bununla birlikte, olgun bir dile C # 'nın girdiği fareler yuvası olmadan ekleme yapmak zor.
Modern web geliştirmede kullanılan birçok dil dinamik olarak yazılmıştır. Bu, kodu yazıldığı gibi dinamik olarak yeniden yükleyebilen bir takım oluşturmayı sağlar (statik bir dilde başarmak daha zordur - jrebel). Web geliştirme kendini hızlı yinelemelere borç verdiğinden, dinamik yeniden yükleme çok büyük bir kazançtır. Yeşil alan projelerinde gelişim döngüsünü önemli ölçüde azaltır ve UI ve UX'i doğru almayı kolaylaştırır (tabiatla deneme ve yanılma).
Statik dillerin de kendi yerleri vardır. Karmaşık, yıllarca çalışması gereken, sorunsuz ölçeklendirilmesi, çok hızlı olması ve tamamen hatasız olması için arka uç mantığı için statik olarak yazılmış diller (Java veya hatta C) tercih edilir.
Ek olarak, geliştirici sayımı / devirleri büyüdükçe ve ürünler olgunlaştıkça, böcek uçlarındaki havai fişeklere neden olan iyi niyetli kişilerin olasılığını artırır. İyi tasarlanmış bir Java projesinin (bu php vampirlere yönelik arayüzler, desenler ve kutsal sular :) zorladığı titizlik ve disiplin) uzun vadeli risklerin azaltılmasına yardımcı olur. Bu, ünite testi ile de sağlanabilir, ancak statik kontrolden (ve bulucu ve klan gibi statik analizörlerden) elde edilen güvenlik ağı, el yazısı testlerle çoğaltılması zor olan yerleşik bir kod kapsamı düzeyi sunar. Beni yanlış anlamayın, birim testler ve fonksiyonel testler olmalı, ancak gerçek organizasyonlar asla% 100 kapsama elde edemezler. Kontrol ettikleri şey için, statik analizörler yapar.
Bu nedenle, bağımsız olarak geliştirilen kod bölümleri arasında karmaşık bir işbirliğinin olduğu büyük projelerde (kod boyutundan daha büyük olarak tanımlandığı gibi), Java gibi diller hala tercih edilmektedir. Örnekler, finansal brokerler (ameritrade), finansal borsalar (nasdaq, nyse, .net başarısızlığından sonra belki londra), çevrimiçi bankacılık (neredeyse hepsi), e-posta (google), açık artırma (ebay) gibi büyük / karmaşık web uygulamalarını içerir. , vb.
Performans ve ölçek perspektifinden bakıldığında hiçbir şey, web uygulamaları için ölçeklenebilirlik ve performansın birleşiminden (facebook'un uygulama bölümlemesini nasıl saydığınıza bağlı olarak) Java platformunun üzerine çıkamaz. Örneğin Twitter, başarısız balinayı denize geri koymak için Scala'daki Ruby altyapısının büyük bir kısmını Java VM'de yeniden yazmak zorunda kaldı. Başka büyük örnekler de duydum, ama şu anda beni harap ediyorlar.
Ayrıca güvenliği göz önünde bulundurmaya değer. Java tarayıcı eklentileri güvenlik açıklarındaki adil paylarına maruz kalsalar da, java platformunun kendisi oluşturulan en güvenli platformlardan biridir. Java web uygulamaları çok güvenli olma ününe sahiptir. Kodlama uygulamaları, kütüphaneleri ve mimarisi, sql enjeksiyonu veya tampon taşması gibi saldırıları mümkün kılan uzun cesareti kırılmış hatalara sahiptir. Diğer web platformları (raylar) iyi bir güvenlik ününe sahipken, hiçbiri Java'yı geçemez.
Alt satırda, çoğu web uygulamaları teknik olarak basittir. Basit bir şekilde, Java genellikle çok fazla abartılıyor (tıpkı eski günlerde olduğu gibi C de yazıyorduk :)). Bununla birlikte, webapp karmaşıksa (arka uç veya başka şekilde) veya 100'den fazla geliştiriciye sahip olması bekleniyorsa, Java'nın yenilmesi zordur.
-
Kişisel bir notta Grails'i çok kullanırım çünkü bana her iki dünyanın da en iyisini verir (aynı şey Ruby dünyasında daha popüler hale geldiğini duyduğum JRuby'nin söyleyebileceği söylenebilir).
BTW - PHP'nin yükselişini gerçekten şaşırtıcı buluyorum. Bir dil olarak PHP, okunabilirlik ve perl ile VB sonuçlarının kalitesindeki kaba eşdeğerdir. Korkunç uygulamaları teşvik eder, sürdürülmesi imkansızdır, 3. parti kütüphaneleri beklendiği gibi nadiren çalışır ve Larry Wall'ı duvarda kaldıracak bir sözdizimine sahiptir. Akla getirebileceğim tek açıklama, kendisini artan bir öğrenmeye (VB gibi) borç vermesidir. Başka bir deyişle, programlama / yönetim hakkında çok az şey bilerek yararlı bir şey başarabilir ve bilginizi bir anda küçük bir yığın olarak genişletebilirsiniz. Evlat edinme bakış açısıyla bunun için söylenecek çok şey var. Bununla birlikte, şirket / mfg dünyasında "programcılar" tarafından yazılmış milyarlarca VB uygulamasından birini desteklemek veya değiştirmek zorunda olan herkes için, Muhtemelen kafanı sallıyor ve emekliliğini planlıyorsun. :)