Kiedy Java jest dobrym wyborem do tworzenia stron internetowych? [Zamknięte]

35

Kiedy Java jest dobrym wyborem do tworzenia stron internetowych?

Nie mów „Gdy masz zespół programistów, który zna tylko Javę”.

Gulshan
źródło
5
Czy można zapytać, która funkcja sprawia, że ​​Java jest moim językiem programowania?
Abimaran Kugathasan
1
Nieznacznym minusem korzystania z Java jest brak dominującego frameworku na rynku. Żadne frameworki oparte na Javie nie wspięły się jeszcze na szczyt stosu (tak jak Struts miał kiedyś). Osobiście skłaniam się ku Spring MVC, jeśli pracuję z aplikacją Spring lub Grails do czegoś innego (ponieważ możesz w dowolnym momencie wywołać Javę).
Martijn Verburg
Nagle otrzymałem 25 punktów od tego pytania!
Gulshan,
czy bierzemy pod uwagę istniejące oprogramowanie typu open source?
jonathan
2
„jak Struts miał za dnia”: co jest złego w korzystaniu dzisiaj z podpór (poza tym, że nie jest już modne)?
Giorgio

Odpowiedzi:

35

Biorąc pod uwagę wiele dostępnych platform, dojrzałość platformy itp., Mam ochotę powiedzieć „prawie zawsze”. Oto kilka powodów, dla których nie powinieneś używać Java:

  • jako czysty sklep MS, prawdopodobnie wolisz robić to w sposób .net
  • jeśli potrzebujesz najtańszego webhostera, prawdopodobnie wybierasz tylko PHP
  • jeśli chcesz to zrobić tak szybko, jak to możliwe, Ruby on Rails, Grails lub Django są prawdopodobnie lepiej dostosowane do twoich potrzeb
  • jeśli twój zespół programistów zna tylko XYZ, gdzie XYZ! = Java, lepiej użyj XYZ
281377
źródło
7
Tak więc używamy Javy, jeśli nie jesteśmy sklepem MS, mamy zamiar wydawać pieniądze na hosting, mieć wystarczająco dużo czasu na rozwój przy użyciu Javy i mieć programistów Java. Czy to jest w porządku?
Gulshan
Gulshan: tak, można to tak
ująć
3
Istnieje wiele innych powodów, takich jak To jest wzdęte, przedsiębiorcze i to Java (ostatnie można zignorować, jeśli używasz Scali lub czegoś innego w JVM).
Raynos,
1
@Raynos, więc co zamiast tego polecasz?
2
@ ThorbjørnRavnAndersen naprawdę zależy od wymagań. Jeśli wymagania są ogólne (nie-niszowe), użyj dowolnej platformy, która jest najwygodniejsza dla programistów i serwerów.
Raynos,
19

Java jest używana w małych i średnich witrynach internetowych. Najważniejsze jest to, że jest dużo mniej darmowego hostingu dla stron Java niż np. PHP, co oznacza, że ​​jeśli nie masz wystarczających zasobów do hostowania własnego serwera WWW, prawdopodobnie nie wybierzesz Java.

Zauważ, że w Javie EE 6, szczególnie w profilu internetowym, dostępnych jest wiele standardowych technologii, które mogą tworzyć bardzo wydajne aplikacje internetowe bez konieczności kodowania zbyt wiele. Niestety nie jest to jeszcze główny nurt.

Zauważ, że zmieniło się to nieco niedawno dzięki Google Application Engine, który pozwala na darmowe wdrażanie standardowych aplikacji internetowych Java (z kilkoma ograniczeniami) w witrynach o niskim lub średnim ruchu.

1249
źródło
We wszystkich przypadkach nie będę hostować mojej witryny w bezpłatnym hostingu. Ale pytanie jest problem z płatnym hostingiem Java? Czy jest to na przykład bardzo drogie?
Goma,
1
@eed, nie jako taki. Większość ludzi wybiera najtańszą opcję i odpowiednio koduje.
Czy jave jest na przykład dużo droższy od innych? czy jest hosting dzielony dla java?
Goma,
@ Tak, istnieje kilka technicznych powodów, dla których nie można zgrupować tylu maszyn JVM w jednym systemie Linux i Windows, ponieważ można tworzyć współużytkowane instancje LAMP, co domyślnie oznacza, że ​​hostowana JVM jest droższa niż hostowana LAMP. Google używa innego JVM, co oznacza, że ​​mogą go oferować za darmo.
@ Thorbjörn: Czy masz jakieś linki o tym, jak Google to robi? Słyszałem, że używają Jetty, ale niewiele wiem o ich rozwiązaniu.
Jonas
12

Gdy twoją platformą jest UNIX / Linux i potrzebujesz bogatego zestawu narzędzi, takich jak mapowanie obiektów / relacji, zabezpieczenia, złożone zarządzanie usługami sieci Web itp.
(Nie mówimy o prostych stronach internetowych, prawda?)

Sorantis
źródło
1
Możesz pobrać te rzeczy również z języków skryptowych - spójrz na Python i SQLAlchemy. Nawet Railsy używają ORM (ActiveRecord) i mają dobre bezpieczeństwo.
Brian D.
3
Rzeczywiście, ale nie sądzę, aby były tak potężne, jak Hibernacja, Spring Framework, frameworki BPEL.
Sorantis,
1
Co jest nie tak z Javą w systemach innych niż UNIX / Windows.
Tom Hawtin - tackline
2
Nic. Ale w systemie Windows masz .NET
Sorantis,
2
-1 Sprawiasz, że brzmi to tak, jakby żadna z alternatyw nie miała dostępnych przyzwoitych narzędzi.
Raynos,
9

Za każdym razem, gdy inny zespół Java mnie wkurza, zdmuchuję parę, szukając takich pytań. Pozwól, że powtórzę. Jestem deweloperem po stronie klienta i działam już od prawie 5 lat. Pracowałem nad witrynami, od jednorazowych mikrostron o dużej zawartości, przez strony tak ogromne jak Sears, aż po bardziej wyrafinowane strony typu aplikacja, w których potrzebna jest naprawdę głęboka wiedza na temat interfejsu użytkownika. Miałem do czynienia z Railsami, PHP, .netowymi formularzami internetowymi (ew), .net MVC (znacznie lepiej) i układem bukietów rozwiązań Java do tworzenia stron internetowych w towarzystwie deweloperów i zespołów, z którymi wszyscy byli kompletnymi katastrofami. Piszę też trochę Pythona i zaczynam kopać Django.

Moje doświadczenie z zespołami Java było ogólnie okropne. Narzędzia są zawsze PITA. Twórcy nigdy nie chcą uwierzyć, że zrobili coś złego, a nakłonienie ich do ponownego zbadania własnej murawy, gdy tylko wykluczysz problem, to jak ciągnięcie zębów. Z mojego doświadczenia wynika, że ​​pierwszą sprawą związaną z zespołami Java jest konwersja czasu programowania na e-mail i pisanie wielu długich wyjaśnień na temat tego, dlaczego problem na pewno się kończy. HTML zazwyczaj nie stanowi ich problemu, chyba że naprawdę chcesz mieć nad nim kontrolę. Wtedy wszystko prawdopodobnie pójdzie do piekła na ich końcu, ponieważ tak naprawdę chcesz przenieść jakieś divy wyższego poziomu.

Są rzeczy w języku, którego nie lubię, ale myślę, że prawdziwym problemem jest kultura i fakt, że akceptacja jest tak powszechna, że ​​w środku jest mnóstwo przeciętności. Podejrzewam, że kultura pochodzi ze sposobu, w jaki Java jest sprzedawana. Napisz raz, wdrażaj wszędzie. Tłumaczenie: „Musisz tylko nauczyć się jednej rzeczy!” Ludzie, którzy uważają to za atrakcyjne, w zasadzie chcą posługiwać się Javą jak gigantyczny młot na każdy gwóźdź przy minimalnym szlifowaniu swojego rzemiosła w zakresie tworzenia stron internetowych.

Więc jeśli masz programistów, którzy znają Javę i inne języki, ale nadal wolą Javę, powiedziałbym, tak, śmiało, jeśli wydaje się to właściwym rozwiązaniem. Ale jeśli masz deweloperów Java, którzy znają Javę, a wszystko inne ledwo spełnia kryteria, aby rzeczywiście było to punktem kulminacyjnym w ich życiorysie, poproś, aby zbudowali prostą aplikację z różnymi pół-złożonymi stronami na końcu HTML i wypróbuj to prosty test. Złam trochę HTML. Postaraj się, aby zrozumieli, co jest nie tak. Jeśli bezpośrednim problemem, który zaczynają rozwiązywać, jest odwrócenie winy od siebie, trzymaj je z dala od tworzenia stron internetowych! Web dev jest interdyscyplinarny i wymaga aktywnego zainteresowania w tej dziedzinie, aby odnieść sukces. To nie jest miejsce dla ludzi, którzy chcą tylko utrzymać znajomość jednego języka i są bardziej przerażeni problemami niż zainteresowani ich rozwiązaniem.

Nie twierdzę, że sama Java jest źródłem niekompetencji i słyszałem, że Wiosna jest dobra. Jestem pewien, że są tam kompetentne zespoły Java. Po prostu jeszcze go nie spotkałem i nie sądzę, że to zbieg okoliczności. Myślę, że Sun ma z tym wiele wspólnego. Myślę też, że prowadzenie zespołów internetowych, takich jak działy IT lub pod nimi, ma z tym wiele wspólnego.

Erik Reppen
źródło
1
Mam te same problemy, które opisujesz, ale nigdy nie myślałem, że może to zależeć od języka programowania. Czy uważasz, że ludzie, którzy programują, powiedzmy w PHP, są bardziej otwarci i elastyczni?
Виталий Олегович
PHP w 100% dotyczy programisty, a mniej kultury wokół niego. Nie podoba mi się jego brak spójności w rdzeniu, ale ufałbym pracy zespołu PHP średniego poziomu do tworzenia stron internetowych w sposób, w jaki nie ufałbym zespołowi Java. Pomaga to doświadczonemu deweloperowi PHP nie współpracować z niczym innym niż siecią i prawdopodobnie został zatrudniony w celu uzyskania doświadczenia w zakresie dyplomów / dyplomów. Problem z Javą może być częściowo spowodowany nieodłączną sztywnością języka, ale szczerze sądzę, że bardziej chodzi o naturę szkolenia deweloperów Java, przyjmowania rozwiązań Java i zatrudniania programistów Java.
Erik Reppen
1
@Erik Reppen: Myślę, że przesadzasz z generalizacją swoich doświadczeń: nie sądzę, że zespoły Java są gorsze niż zespoły, które pracują w innych językach, a przynajmniej nie gorsze niż średnia. Znam dwa bardzo dobre sklepy, które intensywnie współpracują z Javą. Po pierwsze, wykonuje projekty w Javie i Ruby (po około 50%). Drugi działa głównie w Javie, ale wykonał indywidualne projekty w Scali i Common Lisp.
Giorgio
@Giorgio Brakowało mi tego, ale pracowałem z innymi osobami obsługującymi back-end przez .NET, Rails, Java i PHP. Nie liczę jednorazowych doświadczeń z innymi językami, a kiepscy deweloperzy z pewnością nie są unikalni dla Javy. Ponadto, jak powiedziałem, jestem w 100% pewien, że są tam bardzo kompetentne zespoły Java. Ktoś nie musi tego ssać, ale IMO, nie jestem nadmierna generalizacja. Na poziomie mediany występuje problem z programistami Java. Z mojego doświadczenia jest to zjawisko kulturowe. Tak paskudny, że przestałem pracować ze sklepami Java, chyba że znam tych deweloperów.
Erik Reppen,
5

Java doskonale nadaje się do małych witryn internetowych. Strony JSP mogą działać bardzo szybko z serwerem WWW Java, takim jak na przykład Tomcat .

Chociaż z mojego doświadczenia wynika, że ​​Java jest bardziej powszechna w dużych witrynach internetowych, gdzie istnieje większe zapotrzebowanie na złożone przetwarzanie po stronie serwera - w tym przypadku znajdziesz bardziej wyrafinowane frameworki Java, takie jak JavaServer Faces (JSF).

Ważne jest, aby pamiętać, że pełna instalacja Java w przeszłości nie była dostępna w wielu tanich konfiguracjach hostingu, więc może to tłumaczyć występowanie innych języków, takich jak PHP w tych środowiskach.

mikera
źródło
Czy to oznacza, że ​​hosting aplikacji Java jest zbyt drogi? czy nie jest tak tani jak na przykład PHP? czy możesz mi podać dobry link do hosta weh, aby zobaczyć ceny? Przeprowadziłem wyszukiwanie, ale nie wiem, która z nich ma standardowe ceny, więc mogę mieć na ten temat duży obraz.
Goma,
1
hosting aplikacji internetowych Java nie jest drogi, potrzebujesz tylko dostawcy usług hostingowych, który pozwala uruchamiać aplikacje Java. Każde środowisko hostingu systemu Linux, w którym masz konto logowania do komputera, będzie w porządku - osobiście używam Ubuntu w Amazon Web Services do mojego hostingu Java.
mikera
2

Główne powody używania Java w programowaniu WWW sprowadzają się do następujących kwestii:

  • Klient tego wymaga. Na lepsze lub gorsze, niektórzy klienci „zaakceptowali listy technologii”, a jeśli zaproponujesz coś, czego nie ma na tej liście, lepiej wyjaśnij, dlaczego - i dlaczego czegoś na liście nie można użyć.
  • Rozwijaj w systemie Windows, wdrażaj w systemie Unix. Większość maszyn programistycznych to Windows, niektóre Maca, a bardzo mało Linuksa - tak jak można się spodziewać po zwykłych komputerach klienckich. Jednak na serwerze jest równie prawdopodobne, że zobaczysz jakąś formę Uniksa, tak jak na serwerze Windows. Java jest prawdopodobnie najbliższa do napisania po wdrożeniu w dowolnym miejscu (nie jest idealna, ale lepsza niż niektóre alternatywy).
  • Wybór zarządzania. Spójrzmy prawdzie w oczy, wybór Javy zamiast innego języka będzie miał więcej wspólnego z możliwością znalezienia programistów i zastąpienia członków zespołu, którzy opuszczają projekt, niż oparcia się wyłącznie na zaletach tego języka.
Berin Loritsch
źródło
O # 2: proszę poprawnie skonfigurować IDE. Eclipse ma głupi pomysł domyślnego kodowania niektórych plików w systemie Windows, które mogą doprowadzić do spustoszenia na serwerze z systemem Linux.
Eldelshell
Miałem na myśli założenia dotyczące tego, gdzie znajdują się określone pliki i za każdym razem, gdy musisz wchodzić w interakcje z systemem operacyjnym.
Berin Loritsch,
„C jest prawdopodobnie najbliższy do napisania po wdrożeniu w dowolnym miejscu” Naprawiłem to dla ciebie.
Raynos,
@Raynos, gdyby tylko to była prawda. Niestety, chyba że masz takie same standardowe biblioteki na wszystkich platformach, to nie może być prawdziwe. Podstawowy język C jest bardzo przenośny, daję ci to. Jednak wszystko, co jest specyficzne dla systemu operacyjnego (np. Tworzenie wątku, otwieranie gniazda lub tworzenie elementu interfejsu użytkownika) zawiera w interfejsie API coś, czego nie można przenieść za pomocą prostej ponownej kompilacji. W Javie nie jest wymagana ponowna kompilacja, a tym bardziej zmiana kodu w celu użycia nowego systemowego interfejsu API.
Berin Loritsch,
@BerinLoritsch masz na myśli, że po 40 latach nie mamy ogólnych interfejsów API dla rzeczy specyficznych dla systemu operacyjnego, które działają na różnych platformach z prostą ponowną kompilacją? Mogę sobie wyobrazić, że to prawda w latach 80.
Raynos,
2

Z technicznego punktu widzenia:

  • Jeśli potrafisz zdefiniować architekturę, która może być optymalizowana przez hot-spot.
  • Jeśli przewidujesz potrzebę ogromnego narzutu OO, Java narzuca.

Gdybym uruchamiał aplikację internetową, używałbym Ruby on Rails i projektował w taki sposób, aby hotspoty mogły zostać zamienione, gdy RoR osiągnie limit skalowania wydajności.

Java ma wyraźny zapach COBOL, a wiszący wokół niego „słabi koderzy używają Java”, a fiasko Oracle nie pomaga reputacji. Jeśli masz wybór , wybierz język, który przyciąga najlepszych deweloperów.

Paul Nathan
źródło
„wybierz język, który przyciąga najlepszych programistów”. Przykład?
Eldelshell
1
@Ubersoldat: Go, Ruby, Clojure, Haskell, Python - wszystkie języki to robią.
Paul Nathan
Python jest fajny, ponieważ faktycznie udaje mu się wiele rzeczy, które udaje Java. I nie jest trudno sprawić, że gra dobrze z innymi, gdy musisz rozwiązać problem z innym językiem. Nie wiem o Ruby, ale deweloperzy Railsów to coś w rodzaju bzdur w moim doświadczeniu. To efekt JQuery. Lubią to ludzie, którzy wiedzą, co robią, ponieważ jest szybki i skuteczny we właściwych rękach. Lubią to ludzie, którzy nie wiedzą, co robią, ponieważ nie muszą wiedzieć zbyt wiele.
Erik Reppen
@Erik Reppen: Z drugiej strony, Ruby jako język ma ładniejszy i bardziej spójny wygląd niż Python. Naprawdę uważam, że takie porównanie języków jest często kwestią gustu i zwykle preferuje się języki, które są im bardziej znane.
Giorgio
0

To proste: używaj Javy, gdy głównym problemem jest wydajność zaplecza. Kodowanie wiąże się z większymi kosztami, ale kod będzie wykonywany w 1/200 do 1/500 tego czasu - dosłownie. Php, Ruby i inne dynamicznie pisane języki zawsze będą znacznie wolniejsze niż serwery Java lub .net.

Większość rozwiązań internetowych tego nie potrzebuje. Twitter nie porzucił Railsów, dopóki nie zaczął na przykład zdobywać popularności.

Rian Fowler
źródło
-1

Nie jedyny powód, ale wraz z rosnącą popularnością budowania stron internetowych z wyrafinowanymi interfejsami aplikacji, a jednocześnie logiką robienia „rzeczy” z powrotem na serwerze - żaden powód nie powinien być konieczny, aby wyjaśnić, dlaczego Java jest co najmniej równa opcja po stronie serwera. Ale po stronie klienta, jeśli jakikolwiek javascript szybko zamieni się w koszmar utrzymania kodu, a dzięki GWT utrzymasz te rzeczy na wyciągnięcie ręki, aby móc pisać w Javie, możesz mieć to, co najlepsze z obu światów na swoim serwerze wykonując ciężkie podnoszenie, a procesor klienta daje mu „doświadczenie”. Naucz się integrować go z czymś takim, jak jQuery, a możesz mieć także tyle słodyczy, ile chcesz.

Nie jest ekspertem od alternatyw, ale jeśli ktoś inny może zaproponować taką samą elastyczność i szerokość, chętnie o tym usłyszy.

nomaderWhat
źródło
+1 dla jQuery :)
Abel
2
-1 dla „javascript zamienia się w koszmar utrzymania kodu”, jest to tylko efekt uboczny pozwalający programistom Java pisać javascript bez żadnego szkolenia lub nauki JavaScript. a główną wadą GWT jest to, że jest to nieszczelna abstrakcja, powodzenia w zapewnianiu dobrej wydajności na urządzeniach mobilnych.
Raynos,
Problem ze sztywnością Javy, IMO, polega na tym, że trafiasz do wielu deweloperów, którzy nie rozumieją, dlaczego ich kod jest zorganizowany siłą w sposób, w jaki jest. Kiedy wszystko musi wyglądać jak OOP, czasami nieuniknionym rezultatem jest to, że tak naprawdę nic nie jest.
Erik Reppen
-1

Głównym powodem, dla którego wybrałbym java, jest konieczność korzystania z transakcji rozproszonych, co może być dużym problemem dla wielu korporacji. Jednak nadal możesz używać swojego ulubionego języka skryptowego do tworzenia stron internetowych i delegować pracę do java tylko wtedy, gdy potrzebujesz szybkich / rozproszonych transakcji.

Brian D.
źródło
-1

Wierzę, że tak będzie, gdy twoja aplikacja będzie bardzo złożona, z wieloma osobami ją rozwijającymi, z wieloma złożonymi modułami, złożoną logiką biznesową i musi komunikować się z wieloma innymi aplikacjami korporacyjnymi.

W każdym razie możesz również rozwijać się w Grails, który zapewnia wiele fajnych funkcji, bardzo ułatwia programowanie i dojrzewa naprawdę szybko.

Eldelshell
źródło
-1

Java jest w porządku, ale jeśli wydajność nie jest szczególnie ważna, możesz uzyskać te same wyniki przy mniejszym wysiłku w innych językach.

Kevin Cline
źródło
2
„wydajność nie jest szczególnie ważna”, kiedy powinieneś pisać w C, a nie w Javie.
Raynos,
Testy porównawcze w porównaniu z doświadczeniem, witryny Java okazały się najgorsze w moim doświadczeniu jako twórcy po stronie klienta. Może to być kwestia mediany poziomu talentów bardziej niż kwestia językowa.
Erik Reppen
2
@ErikReppen: Zdecydowanie talent. Szybkość Java na serwerze ustępuje tylko C / C ++. PHP lub Rails po prostu nie mogą się porównywać. Ale biblioteki Java i niektóre narzędzia sprawiają, że zbyt łatwo jest stracić całą szybkość, robiąc niepotrzebnie skomplikowane rzeczy.
Zan Lynx,
-1

Java jest językiem o typie statycznym i jest tańszy niż inne języki o typie statycznym używane do tworzenia stron internetowych, a mianowicie C # i VB.net, jeśli Twoja firma nie ma subskrypcji MSDN. Języki o typie statycznym są dobre dla średnich i dużych projektów, złożonych reguł domenowych i wielu kodów zaplecza, ponieważ możesz lepiej organizować swoje zajęcia, a IDE pomogą ci znaleźć błędy w kodzie.

Dzięki dynamicznie wpisywanym językom, takim jak PHP, Python, Ruby, rozwój będzie znacznie szybszy, ale będziesz musiał znacznie lepiej przetestować kod. Jeśli nie masz dużo czasu i pieniędzy, a Twoje wymagania zmieniają się bardzo szybko i nie musisz wykonywać bardzo skomplikowanych obliczeń, języki dynamiczne są znacznie lepsze.

Виталий Олегович
źródło
-2

Bezpieczeństwo

Głównym powodem, dla którego duże firmy wybierają Javę zamiast innych rozwiązań, jest to, że uważa się ją za znacznie bezpieczniejszą.

Wynika to głównie z tego, że jest obsługiwany przez tak dużą firmę (obecnie Oracle).

Należy wziąć pod uwagę, że Java oferuje bardzo wysoki poziom bezpieczeństwa oraz doskonałe wsparcie i analizy (choć ma swoją cenę).

mrwooster
źródło
7
Uhh ... a bezpieczeństwo pochodzi magicznie z samego języka czy co?
Mchl,
1
Zdajesz sobie sprawę, że Oracle NIE jest jedynym dostawcą kontenerów serwletów Java, prawda?
Mchl,
6
Święta wojna! Walka walka!
abel
2
@Mchl Niektóre z nich pochodzą z języka, a raczej z jego maszyny wirtualnej. Ile razy widziałeś ataki przepełnienia bufora na serwery aplikacji Java? To po prostu nie jest warte wysiłku. Powiedziawszy to, Java jest uważana za „bezpieczniejszą” przez branżę niż jest w rzeczywistości, a fałszywe poczucie bezpieczeństwa może mocno odepchnąć.
biziclop
1
Chodzi mi o to, że musisz różnicować Java jako język i środowiska wykonawcze Java. Nic nie sprawia, że ​​język Java jest mniej lub bardziej bezpieczny niż jakikolwiek inny język. Z drugiej strony maszyny JVM są zaprojektowane (między innymi) do wykonywania kodu bajtowego Java „piaskownicy”, ale ich bezpieczeństwo zależy od konkretnej implementacji. Dobra uwaga na fałszywe poczucie bezpieczeństwa.
Mchl