Java ne zaman web geliştirme için iyi bir seçimdir? [kapalı]


35

Java ne zaman web geliştirme için iyi bir seçimdir?

Lütfen "Yalnızca Java'yı bilen bir geliştirme ekibiniz varsa" deme.


5
Java'yı web geliştirme dilim olarak hangi özelliklere dönüştüren sorulabilir?
Abimaran Kugathasan

1
Java'yı kullanmanın hafif bir dezavantajı, piyasada baskın hâkim bir çerçevenin olmamasıdır. Java tabanlı bir çerçeve henüz yığının en üstüne yükselmedi (Struts'un eskiden olduğu gibi). Şahsen, herhangi bir şey için bir Spring uygulamasıyla veya Grails ile çalışıyorsam (istediğiniz zaman Java'yı arayabileceğiniz gibi) Spring MVC'ye dayanırım.
Martijn Verburg

Aniden bu sorudan 25 puan aldı!
Gulshan

Mevcut açık kaynaklı yazılımları dikkate alıyor muyuz?
Jonathan

2
"Struts'ın güne döndüğü gibi": Günümüzde dikmeleri kullanmanın nesi yanlış (artık modası olmayan).
Giorgio

Yanıtlar:


35

Mevcut birçok çerçeve, platformun vade vb. Göz önüne alındığında, "neredeyse her zaman" demeye çalışıyorum. İşte Java kullanmamanız için bazı nedenler:

  • saf bir MS mağazası olarak, muhtemelen .net biçiminde yapmayı tercih edersiniz.
  • Mümkün olan en ucuz webhoster'a ihtiyacınız varsa, muhtemelen sadece seçtiğiniz PHP
  • Mümkün olduğu kadar çabuk yapmak istiyorsanız, Ruby on Rails, Grails veya Django ihtiyaçlarınız için daha uygun olabilir.
  • geliştirme ekibiniz yalnızca XYZ'yi tanıyorsa, nerede XYZ! = Java, XYZ'yi daha iyi kullanırsanız

7
Bu yüzden, biz bir MS mağazası değilsek, barındırma için para harcamayı, Java'yı geliştirmek için yeterli zamana ve Java geliştiricisine sahip olmak için Java kullanıyoruz. Tamam mı?
Gulshan

Gulshan: evet, bu şekilde koyabilirsin
user281377

3
Bu şişirilmiş, enterprisey ve Java gibi başka nedenler de vardır (Scala veya JVM için başka bir şey kullanırsanız, son ihmal edilebilir).
Raynos,

1
@Raynos, bunun yerine ne tavsiye edersiniz?

2
@ ThorbjørnRavnAndersen gerçekten gereksinimlerin ne olduğuna bağlı. Gereksinimler genelse (niş olmayan), geliştiricileriniz ve sunucularınız için en uygun olan platformu kullanın.
Raynos

19

Java , küçük ve orta ölçekli web sitelerinde kullanılır. Önemli nokta, Java web siteleri için örneğin PHP'ye göre çok daha az ücretsiz web barındırma olmasıdır, yani kendi web sunucunuzu barındırmak için yeterli kaynağa sahip değilseniz, muhtemelen Java'yı seçmeyeceksiniz demektir.

Java EE 6'da, özellikle de web profilinde, çok fazla kodlama yapmak zorunda kalmadan çok güçlü web uygulamaları oluşturabilen birçok standart teknolojinin bulunduğunu unutmayın. Maalesef henüz ana akım değil.

Bunun, bulutta standart Java web uygulamalarını (birkaç kısıtlama ile) dağıtmanıza olanak tanıyan Google Application Engine ile biraz değiştiğini unutmayın.


Her durumda, web sitemi ücretsiz bir web hostingte barındırmayacağım. Ancak soru orada ücretli java web hosting ile bir probelm var? Mesela çok mu pahalı?
Goma

1
@ saeed, öyle değil. Çoğu insan sadece en ucuz seçeneği seçer ve buna göre kod yazar.

Jave diğerlerinden daha mı pahalı? Java için paylaşılan bir barındırma var mı?
Goma

@Saeed, paylaşılan LAMP örneklerini oluşturabileceğiniz için, tek bir Linux og Windows kutusunda çok sayıda JVM'yi gruplayamamanızın bazı teknik nedenleri vardır; bu, barındırılan bir JVM'nin barındırılan bir LAMP'den daha pahalı olduğu anlamına gelir. Google, ücretsiz olarak sunabilecekleri farklı bir JVM kullanıyor.

@ Thorbjörn: Google’ın nasıl yaptığıyla ilgili bir bağlantınız var mı? Jetty kullandıklarını duydum, ama çözümleri hakkında daha fazla bir şey bilmiyorum.
Jonas

12

Platformunuz UNIX / Linux olduğunda ve Nesne / İlişkisel Haritalama, Güvenlik, Web Servislerinin Karmaşık Düzenlemesi, vb. Gibi zengin araçlara ihtiyacınız olduğunda.
(Basit web sitelerinden bahsetmiyoruz, değil mi?)


1
Bunları script dillerinden de alabilirsiniz - Python ve SQLAlchemy'ye bakın. Rails bile bir ORM kullanır (ActiveRecord) ve iyi bir güvenlik sağlar.
Brian D.

3
Gerçekten de, onların Hazırda Beklet, Bahar Çerçeve, BPEL çerçeveleri kadar güçlü olduğunu sanmıyorum.
Sorantis

1
UNIX olmayan / Windows'ta Java ile ne yanlış.
Tom Hawtin - 23 Ocak'ta

2
Hiçbir şey değil. Ancak Windows'ta .NET var
Sorantis 19:11

2
-1 Alternatiflerden herhangi biri gibi görünmesini sağladığınızda, uygun araçlara sahip değilsiniz.
Raynos,

9

Her seferinde bir başka Java ekibi beni kızdırıyor, bunun gibi soruları arayarak buharı patlatıyorum. Tekrar etmeme izin ver. Ben müşteri tarafındayım ve şimdi 5 yıla yakın bir süredir. Bir kerede çoğunlukla içerik mikrositlerinden, Sears kadar büyük sitelere, gerçekten derin UI uzmanlığına ihtiyaç duyulan daha karmaşık uygulama tipi sitelere kadar çeşitli sitelerde çalıştım. Rails, PHP, .net web formları (ew), .net MVC (çok daha iyi) ve web geliştirme için Java çözümlerinden oluşan bir buket düzenlemesi yaptım. Ayrıca biraz Python da yazarım ve Django'yu kazmaya başlıyorum.

Java ekipleriyle olan deneyimim evrensel olarak berbat geçti. Araçlar her zaman bir PITA. Devler asla yanlış bir şey yaptıklarına inanmak istemezler ve bir problemi çözdüğünüzde kendi çimlerini yeniden sorgulamalarını sağlamak, dişleri çekmek gibidir. Java ekipleriyle uğraşma deneyimimdeki ilk zayiat, sorunun neden kesinlikle bittiğine dair çok uzun açıklamalar yapan e-posta zamanına dönüştürülen geliştirme zamanı. Aslında üzerinde biraz kontrol istemediğiniz sürece, HTML genellikle onların sorunu değildir. O zaman her şey yolunda cehenneme gidecek, çünkü bazı üst düzey divleri hareket ettirmek istiyorsun.

Sevmediğim bir şey var ama bence asıl sorun kültür ve kabulün çok yaygın olduğu gerçeği, ortada bir ton sıradanlığınız var. Şüphelendiğim kültür, Java'nın pazarlanma şeklinden kaynaklanıyor. Bir kere yaz, her yere dağıt. Tercüme: "Sadece bir şeyi öğrenmen gerekiyor!" Bu çekiciliği bulan insanlar, Java'yı her çivi için devasa bir çekiç gibi, web geliştirme konusunda asıl mesleğini asgariye düşürmek istiyorlar.

Bu yüzden Java ve diğer dilleri bilen ama hala Java'yı tercih eden geliştiricileriniz varsa, doğru çözüm gibi görünüyorsa devam edin, evet derim. Ancak, Java'yı tanıyan Java geliştiricileriniz varsa ve diğer her şey, yalnızca özgeçmişlerinde bir mermi noktası haline getirme ölçütlerini zorlukla karşılıyorsa, HTML sonunda çeşitli yarı karmaşık sayfalarla basit bir uygulama oluşturmalarını ve denemelerini isteyin basit bir test. HTML'yi kır. Neyin yanlış olduğunu anlamalarını sağlamaya çalış. Çözmeye başladıkları acil sorun, suçu kendilerinden uzaklaştırıyorsa, web geliştirilmesinden! @ # $ Uzak tutun. Web dev multidisiplinerdir ve başarılı olmak için alana aktif olarak ilgi duyulmasını gerektirir. Sadece bir dilin bilgisini korumak isteyen ve problemleri çözerek ilgilenmekten daha çok korkan insanlar için uygun bir yer değil.

Java'nın kendisinin yetersizliğin kökü olduğunu iddia etmiyorum ve Spring'in iyi olduğunu duydum. Eminim orada yetkili Java ekipleri vardır. Henüz bir tanesine rastlamadım ve tesadüf olduğunu sanmıyorum. Bence Sun'ın bununla çok ilgisi var. Ayrıca, BT departmanları gibi veya altında çalışan web takımlarını yönetmenin de bununla bir ilgisi olduğunu düşünüyorum.


1
Sizin tarif ettiğiniz aynı problemlere sahibim, ancak bunun programlama diline bağlı olabileceğini asla düşünmedim. PHP'de programlar yapan insanların daha açık fikirli ve esnek olduğunu düşünüyor musunuz?
Виталий Олегович

PHP geliştirici hakkında% 100 ve onu çevreleyen bir kültür hakkında daha az. Çekirdekteki tutarlılık eksikliğinden hoşlanmıyorum, ancak bir Java ekibine güvenmeyeceğim bir şekilde orta seviye PHP ekibinin web geliştirme çalışmalarına güvenirdim. Bu, deneyimli bir PHP dev'in, web ve muhtemelen dereceler / bilgiler konusunda deneyim kazanmak için işe alınmasından başka bir şeyle çalışmamış olma ihtimalinin düşük olmasına yardımcı olur. Java sorunu, kısmen dilin sağlamlığı nedeniyle olabilir, ancak dürüst olmak gerekirse, Java cihazlarının nasıl eğitildiği, Java çözümlerinin benimsendiği ve Java cihazlarının işe alınmasının doğası hakkında daha fazla düşünüyorum.
Erik,

1
@Erik Reppen: Deneyiminizi aşırı genelleştirdiğinizi düşünüyorum: Java ekiplerinin diğer dillerde çalışan ekiplerden daha kötü, en azından ortalamadan daha kötü olmadığını düşünüyorum. Java ile yoğun çalışan iki çok iyi dükkan biliyorum. İlki, Java ve Ruby'de projeler yapıyor (her biri yaklaşık% 50). İkincisi çoğunlukla Java'da çalışıyor ancak Scala ve Common Lisp'te bireysel projeler yaptı.
Giorgio

@Giorgio Bunu özledim ama diğer kullanıcılarla .NET, Rails, Java ve PHP üzerinden arka uçta çalışan kişilerle çalıştım. Bir defalık deneyimleri diğer dillerle saymıyorum ve bu boktan şeytanlar kesinlikle Java'ya özgü değil. Ayrıca,% 100 emin olduğumu söylediğim gibi orada çok yetenekli Java ekipleri var. Biri onu emmek zorunda değil ama IMO, aşırı kuvvete almıyorum. Java devs ile medyan düzeyinde bir sorun var. Deneyimime göre kültürel bir fenomen. Söz konusu aygıtları tanımadığım sürece Java mağazalarıyla çalışmayı bıraktığım kadar iğrenç biri.
Erik, 05: 13'te

5

Java küçük web siteleri için gayet iyi, JSP sayfalarının Tomcat gibi bir Java web sunucusuyla çok hızlı çalışmasını sağlayabilirsiniz .

Deneyimime göre Java, karmaşık sunucu tarafı işlemeye daha fazla ihtiyaç duyulan büyük web siteleri için daha yaygın olmasına rağmen, bu durumda, JavaServer Faces (JSF) gibi daha sofistike Java çerçeveleri bulacaksınız.

Tam bir Java kurulumunun tarihsel olarak pek çok ucuz web barındırma kurulumunda mevcut olmadığına dikkat etmek önemlidir, bu nedenle bu ortamlardaki PHP gibi diğer dillerin yaygınlığını açıklayabilir.


Java barındırma web uygulamaları çok pahalı mı demek? ya da örneğin PHP kadar ucuz değil mi? Bana fiyatları görmek için java için iyi bir weh host link verebilir misiniz? Bir arama yaptım ama hangisinin standart fiyatları olduğunu bilmiyorum, bu yüzden bunun hakkında daha büyük bir resim çekebilirim.
Goma

1
Java web uygulamalarını barındırma pahalı değildir, yalnızca Java uygulamalarını çalıştırmanıza izin veren bir barındırma sağlayıcısına ihtiyacınız vardır. Makineye giriş hesabı aldığınız herhangi bir Linux barındırma ortamı iyi olacak - Kişisel olarak, Java barındırma için Amazon Web Hizmetlerinde Ubuntu'yu kullanıyorum.
mikera

2

Java'yı web geliştirmede kullanmanın temel nedenleri aşağı doğru kayıyor:

  • Müşteri talep ediyor. Daha iyisi ya da kötüsü için, bazı müşterilerin "kabul edilen teknoloji listeleri" var ve bu listede olmayan bir şeyi teklif ederseniz, neden - ve listedeki bir şeyin neden kullanılamadığına dair gerçekten iyi bir açıklama yapmalısınız.
  • Windows'ta geliştirin, Unix'te dağıtın. Çoğu geliştirme makinesi Windows, bazıları Mac ve çok azı Linux'tur - tıpkı normal istemci makinelerinde beklediğiniz gibi. Ancak sunucuda, bir Windows sunucusu gibi bir tür Unix görme olasılığınız da yüksek. Java muhtemelen herhangi bir yere konuşlandırmak için en yakın olanıdır (mükemmel değildir, ancak bazı alternatiflerden daha iyidir).
  • Yönetim seçimi. Kabul edelim, Java'yı başka bir dilden seçmek, programcıları bulmak ve projeyi terk eden ekip üyelerinin yerini tamamen dilin esasına dayandırmaktan daha fazlasını yapacak.

# 2 hakkında: lütfen IDE'nizi doğru şekilde yapılandırın. Eclipse, Linux sunucusunda hasara yol açabilecek bazı Windowish dosya kodlamada varsayılan bu aptallık fikrine sahiptir.
Eldelshell

Aslında, belirli dosyaların nerede yaşadığı ve işletim sistemiyle ne zaman etkileşime geçmeniz gerektiği konusundaki varsayımlardan bahsediyordum.
Berin Loritsch

"C muhtemelen bir yerde konuşlandırmak için bir kez yazmaya en yakın" demiştim.
Raynos,

@Raynos, sadece bu doğru olsaydı. Ne yazık ki, tüm platformlarda aynı standart kütüphanelere sahip değilseniz, bu geçerli olamaz. Çekirdek C dili çok taşınabilir, size bunu veriyorum. Bununla birlikte, işletim sistemine özgü herhangi bir şey (bir iplik oluşturmak, bir soket açmak veya bir UI öğesi oluşturmak gibi) API'de basit bir yeniden derleme ile taşınamayan bir şey vardır. Java ile, yeni sistem API'sini kullanmak için kodu değiştirmek çok daha az, yeniden derleme gerekmez.
Berin Loritsch

@BerinLoritsch, 40 yıl sonra, sadece platformlar arası basit bir yeniden derlemeyle çalışan işletim sistemine özgü şeyler için genel API'lerimizin olmadığını mı söylemek istiyorsunuz? 80'lerde olsa doğru olduğunu hayal edebiliyorum.
Raynos,

2

Teknik olarak konuşursak:

  • Hot-spot optimizer'a uygun bir mimari tanımlayabilirseniz.
  • Büyük OO ek yüküne olan ihtiyacı önceden tahmin ederseniz Java uygular.

Bir web uygulamasına başlasaydım, Ruby on Rails'i kullanırdım ve RoR kendi performans ölçeklendirme sınırına ulaştığında sıcak noktaların değiştirilebileceği bir şekilde tasarlardım.

Java'nın belirli bir COBOL kokusu vardır ve "düşük seviye kodlayıcılar, Java'yı kullanır" dır ve Oracle fiyaskoları üne yardımcı olmaz. Seçme şansınız varsa, üst düzey aygıtları çeken bir dil seçin.


"En iyi aygıtları çeken bir dil seçin." Örnek?
Eldelshell

1
@ Ubersoldat: Git, Ruby, Clojure, Haskell, Python hepsi bunu yapan dillerdir.
Paul Nathan

Python hoş, çünkü aslında Java'nın gösterdiği birçok şeyde başarılı oluyor. Başka bir dilin problemini çözmeniz gerektiğinde diğerleriyle iyi oynamasını sağlamak zor değil. Ruby'yi bilmiyorum, ama Rails aygıtları deneyimlerime göre bir barut atışı gibi. JQuery etkisi. Ne yaptığını bilen insanlar, çünkü doğru ellerde hızlı ve etkili. Ne yaptığını bilmeyen insanlar, çünkü o kadar fazla bilmek zorunda değiller.
Erik,

@Erik Reppen: Öte yandan, Ruby dili olarak Python'dan daha hoş ve tutarlı bir tasarıma sahip. Bence bu dil karşılaştırmasının çoğu zaman bir zevk meselesi olduğunu ve birinin daha aşina oldukları dilleri destekleme eğiliminde olduğunu düşünüyorum.
Giorgio

0

Çok basit: Java'yı arka uç performans önemli bir sorun olduğunda kullanın. Kodlamada daha fazla ek yük vardır, ancak kod tam anlamıyla 1/200 ile 1/500 arasında gerçekleşir. Php, Ruby ve diğer dinamik olarak yazılmış diller, java veya .net sunucularından her zaman çok daha yavaş olacaktır.

Web için çoğu çözüm buna ihtiyaç duymayacak. Twitter, örneğin popülaritesini artırmaya başlayana kadar Rails'ten vazgeçmedi.


-1

Tek neden değil, ama uygulama benzeri ön uçları olan web sitelerinin popülerliğini arttırırken, sunucuda 'şeyler' yapmayı hala mantıklı kılarken - Java'nın neden en azından diğerlerinin eşit olduğunu açıklamak için hiçbir neden gerekli değil Sunucu ucundaki seçenek. Ancak müşteri sonunda, herhangi bir javascript hızlı bir şekilde kod bakım kabusuna dönüşecekse ve GWT'yi kullanarak bunları silah uzunluğunda tutmak için kullanacaksanız, böylece Java'da kod yazabilirsiniz, sunucunuzla her iki dünyanın en iyisini elde edebilirsiniz. ağır kaldırma ve müşterinin işlemcisini onlara 'deneyim' vererek yapıyor. JQuery gibi bir şeyle entegre etmeyi öğrenin ve istediğiniz tüm göz şekerlerini de alabilirsiniz.

Alternatifler konusunda herhangi bir uzman değil, ancak bir başkası aynı esneklikte ve genişlikte bir teklifte bulunabilirse, bunu duyduğuna sevindi.


İçin 1 jQuery :)
abel

2
"Javascript kod bakım kabusuna dönüşüyor" için -1, Bu, Java geliştiricilerinin herhangi bir eğitim veya JavaScript öğrenmeden javascript yazmasına izin vermenin yalnızca bir yan etkisidir. ve GWT'nin en büyük dezavantajı, sızdıran bir soyutlama olması, mobil cihazlarda iyi performans göstermesinde iyi şanslar olması.
Raynos,

Java'nın sağlamlığı olan IMO ile ilgili sorun, kodlarının neden ilk başta olduğu gibi zorla organize edildiğini anlamayan birçok geliştiriciyle karşılaşmanız. Her şey OOP'a benzemesi gerektiğinde, bazen kaçınılmaz sonuç aslında hiçbir şeyin olmamasıdır.
Erik,

-1

Java'yı seçmemin temel nedeni, birçok şirket için büyük bir endişe kaynağı olabilecek dağıtılmış işlemleri kullanmanız gerekmesidir. Ancak yine de favori scriptleme dilinizi web geliştirme için kullanabilirsiniz ve hızlı / dağıtılmış işlemlere ihtiyaç duyduğunuzda yalnızca java üzerinde çalışarak yetki verebilirsiniz.


-1

Uygulamanızın çok karmaşık olacağı, birçok insanın geliştirdiği, birçok karmaşık modüller, karmaşık iş mantığı ve diğer birçok kurumsal uygulama ile iletişim kurması gerektiğine inanıyorum.

Her neyse, birçok güzel özellik sağlayan, geliştirmeyi çok kolaylaştıran ve çok hızlı olgunlaşan Grails'te de geliştirebilirsiniz.


-1

Java iyidir, ancak performans çok önemli değilse, diğer dillerde de aynı sonuçları daha az çabayla elde edebilirsiniz.


2
"performans çok önemli değil" olduğunda C ile yazmalı ve Java değil de meclis yazmalısınız.
Raynos,

Deneyimlere karşı kıyaslamalar, Java siteleri ellerimi bir müşteri tarafı dev olarak deneyimimdeki en kötü performansı sergiler. Bu, bir dil becerisinden öte medyan yetenek düzeyinde bir sorun olabilir.
Erik,

2
@ErikReppen: Kesinlikle bir yetenek. Bir sunucudaki Java hızı yalnızca C / C ++ 'a ikinci. PHP veya Rails sadece karşılaştıramazsınız. Ancak Java'nın kütüphaneleri ve araçların bazıları işe yaramaz şekilde karmaşık şeyler yaparken tüm bu hızları kaybetmeyi çok kolaylaştırıyor.
Zan Lynx

-1

Java, statik olarak yazılmış bir dildir ve şirketinizin MSDN aboneliği yoksa, web geliştirme için kullanılan diğer statik olarak yazılmış dillerden (C # ve VB.net) daha ucuzdur. Statik olarak yazılmış diller orta ila büyük projeler, karmaşık etki alanı kuralları ve birçok arka plan kodu için iyidir, çünkü sınıflarınızı daha iyi düzenleyebilirsiniz ve IDE'ler kodunuzdaki hataları bulmanıza yardımcı olacaktır.

Dinamik olarak yazılmış dillerle, PHP, Python, Ruby gibi, geliştirmeniz çok daha hızlı olacak ancak kodunuzu daha iyi test etmeniz gerekecek. Çok fazla zamanınız ve paranız yoksa ve gereksinimleriniz çok hızlı bir şekilde değişirse ve çok karmaşık hesaplamalar yapmanız gerekmiyorsa, dinamik diller çok daha iyidir.


-2

Güvenlik

Java'yı diğer çözümlere göre seçen büyük şirketlerin temel nedeni, çok daha güvenli olduğu düşünülüyor.

Bunun temel nedeni, böylesine büyük bir şirket tarafından desteklenmesidir (şimdi kahin).

Java'nın çok yüksek düzeyde güvenlik ve mükemmel destek ve analiz sunduğunu göz önünde bulundurmalısınız (bir bedeli olsa da).


7
Uhh ... ve güvenlik sihirli bir şekilde dilin kendisinden mi geliyor?
Milch

1
Oracle'ın Java servlet konteynerlerinin tek sağlayıcısı olmadığının farkındasınız, değil mi?
Milch

6
Kutsal savaş! Kavga kavga!
abel

2
@Mchl Bazıları dilden veya VM'den geliyor. Java uygulama sunucularına yönelik kaç kez tampon aşma koruması olduğunu gördünüz? Bu sadece çabaya değmez. Java’nın “endüstri” tarafından olduğundan daha güvenli olduğu söylenir ve yanlış bir güvenlik duygusu sert bir şekilde ısırılabilir.
biziclop

1
Buradaki noktam, dil olarak Java ile Java çalışma zamanı ortamları arasında ayrım yapmanız gerektiğiydi. Java dilini diğer dillerden daha fazla veya daha az güvenli yapan hiçbir şey yoktur. Öte yandan JVM'ler (diğer şeylerin yanı sıra) Java bayt kodu çalıştırma işlemlerini 'sanallaştırmak' için tasarlanmıştır, ancak güvenliği belirli uygulamalara bağlıdır. Yanlış güvenlik duygusu olsa iyi bir nokta.
Milch
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.