Czy Twoja firma myśli o przejściu z Java do innej technologii? [Zamknięte]

9

Jak wie każdy programista Java, Oracle kupił firmę Sun, a przyszłość Java jest dość niejasna, zwłaszcza że Oracle chce zarabiać na JVM. Java jako język była również przestarzała w ciągu ostatnich kilku lat, niewłączenie zamknięć jest jednym przykładem (który może być zawarty w java 1.8). Jednocześnie wykorzystywane są niektóre nowe technologie, takie jak Ruby, Scala i Groovy dostarczać złożone witryny.

Zastanawiam się, czy istnieją firmy lub organizacje, które mówią, robią impulsy lub zaczynają korzystać z innej technologii, z pomysłem, aby przestać używać java do projektów zielonych pól, w taki sam sposób, jak 15 lat temu firmy migrowały z C ++, perl i inne technologie Java. Interesuje mnie również, jakie są wrażenia z tego wydarzenia, na przykład: planuję migrację do innej technologii za 2 lata.

Żeby było jasne, nie pytam, która technologia jest lepsza. Pytam, czy Twoja organizacja zamierza odejść z Javy w celu skorzystania z innej technologii.

Augusto
źródło
1
Czy Groovy i Scala nie są zależni od JVM? Jeśli tak, niepokoi ich również Oracle, która chce zarabiać na JVM.
POSIX_ME_HARDER
Masz rację. Będzie to miało wpływ na przyjęcie Scali, Groovy lub JRUby w firmach, które chcą komercyjnego jvm zamiast otwartego jvm. Oryginalne pytanie pozostawiam nietknięte, ponieważ uważam, że niektóre firmy mogą z przyjemnością płacić za komercyjną maszynę JVM, aby używać innego języka
Augusto
Jako programista Java mam problem z Twoim stwierdzeniem „jak każdy programista Java”. Myślę, że przyszłość Java jest zarówno a) jasna, jak i b) jasna. Jestem pewien, że niektórzy ludzie mogą chcieć dodatkowo zapłacić za pakiet wsparcia „premium” firmy Oracles, ale dla tych z nas, którzy planują trzymać się bezpłatnej, otwartej wersji Javy (która nie zniknie!) nieco nieistotne.
mikera
Mikera, wspominasz o open source, ale niektórzy z wpływowych programistów Java, którzy kiedyś prowadzili projekty open source, teraz prowadzą projekty w innych językach, więc ich „energia” jest odwrócona od java. Sprawdź wszystkie niesamowite frameworki, które są dostępne dla Scali, Groovy lub Ruby. Nie mam liczb, które mogłyby to poprzeć, ale może być interesujące sprawdzenie, ile „linii kodu” zostało przeznaczonych na repozytoria open source w różnych językach głównego nurtu i tendencjach.
Augusto

Odpowiedzi:

9

Wcale nie - w rzeczywistości dużo inwestuję w Javę jako platformę w mojej firmie (startup rozwijający aplikacje i narzędzia SaaS do eksploracji danych).

Oto powody:

  • Wybór Javy jako platformy nie oznacza, że ​​musisz używać Javy jako języka. Używamy Clojure jako podstawowego języka programowania aplikacji, od czasu do czasu przechodząc na Javę w razie potrzeby. Ale inne języki JVM, takie jak Scala i Groovy, są również świetne.

  • Osobiście nie martwię się o Oracle . Główna implementacja Java prawie na pewno będzie nadal open source ( OpenJDK ) i swobodnie dostępna. Jeśli Oracle zrobiło coś głupiego, inne duże firmy (w szczególności IBM i Google) zainwestowały zbyt wiele w Javę, aby sobie z tym poradzić, i mogły z łatwością rozwijać Javę bez pomocy Oracle.

  • JVM jest doskonałym środowiskiem wykonanie . Wieloplatformowa, bardzo wysoka wydajność, wyjątkowo dobra optymalizacja technologii JIT. Jest wystarczająco zbliżony do prędkości natywnej, że nie obchodzi mnie ułamkowa część, że jest on wolniejszy niż C / C ++, a ten narzut jest więcej niż rekompensowany przez prawidłowe odśmiecanie i zarządzane środowisko wykonywania kodu bajtowego itp.

  • Java ma świetny ekosystem bibliotek open source . Powiedziałbym, że jest to najlepszy ekosystem ogólnie z dowolnego języka. Oznacza to, że większość „ciężkich ładunków” pod względem infrastruktury została już wykonana, w bardzo wysokiej jakości. A fakt, że większość rzeczy, których potrzebujesz, to oprogramowanie typu open source oznacza, że ​​nie musisz ponosić kosztów (zarówno pod względem pieniędzy, jak i czasu zarządzania) uzyskania licencji.

  • Eclipse to świetne IDE i zapewnia fantastyczny zestaw narzędzi do tworzenia solidnych aplikacji dla przedsiębiorstw. Używamy integracji Maven, JUnit, Git / SVN i wielu innych narzędzi, które są dostępne jako wtyczki Eclipse. Wszystko „po prostu działa”.

Wreszcie, jakie są inne opcje?

  • .NET jest jedyną platformą o porównywalnych możliwościach i osobiście lubię C #, ale blokuje Cię w technologiach Microsoft (gorzej niż Oracle / IBM IMHO) i nie ma takiej samej szerokości ekosystemu open source. Dobra dla sklepów Microsoft, ale nie, jeśli chcesz kontrolować swoje własne technologiczne przeznaczenie. I tak, Mono jest uroczy, ale nie mogę sobie pozwolić na postawienie firmy na platformie, która może, ale nie musi, utrzymywać działający poziom kompatybilności z głównym nurtem .NET.

  • Są też inne wspaniałe języki, które są bardzo dobre w tym, co robią (np. Ruby, Python, PHP, JavaScript), ale nie oferują przekonującego, kompleksowego odpowiednika platformy Java. Ryzyko polega na tym, że musisz zacząć sklejać wiele rzeczy w nieco mniej niż pięknej architekturze. Nie jest to problem przy tworzeniu stron internetowych, szybkich i brudnych aplikacji, ale mniej atrakcyjny dla długoterminowego rozwoju produktu.

  • C / C ++ jest świetny do programowania systemów i gier, ale jest po prostu zbyt skomplikowany / kosztowny / nieelastyczny do tworzenia nowoczesnych aplikacji internetowych.

  • Są też piękne języki, które kocham, takie jak Haskell, które są fantastyczne z naukowego punktu widzenia, ale po prostu nie mają branży / ekosystemu niezbędnego do uczynienia ich wiarygodnym wyborem platformy. Mogę również czerpać większość korzyści z nowoczesnego programowania funkcjonalnego, uruchamiając Clojure na JVM .....

Tak, to złożona decyzja. Ale podjąłem decyzję dotyczącą Java przede wszystkim po wielu rozległych badaniach i rozważaniach. Wciąż podejmowałbym dziś tę samą decyzję.

AKTUALIZACJA

Kilka słów o wyborze Clojure na JVM jako wybór języka. Głównymi motywacjami były:

  • Współbieżność - Clojure ma unikalną historię współbieżności, więc dobrze jest oglądać ten film, który opisuje niektóre z podstawowych koncepcji. Można go niezawodnie skalować do architektur wielordzeniowych przy użyciu pamięci transakcyjnej oprogramowania . Udaje się to zrobić bez większych kosztów (bez blokady!), Co jest dość niezwykłym wyczynem inżynieryjnym.
  • Programowanie funkcjonalne - Clojure to funkcjonalny język, który podkreśla niezmienność i funkcje wyższego rzędu. Nie jest tak funkcjonalny jak Haskell, ale przede wszystkim jest językiem FP. Niektórzy twierdzą, że pomaga to pisać lepsze programy.
  • Wydajność programisty - Clojure czerpie wszystkie korzyści z wydajności wynikające z filozofii Lisp code-is-data. W praktyce oznacza to niewiarygodnie potężne możliwości makr oraz prostą, ale niezwykle elastyczną składnię, której można użyć do zdefiniowania własnych DSL dla każdego problemu, z którym masz do czynienia.
  • Potrzeba dynamicznego języka odpowiedniego do szybkiego programowania i tworzenia skryptów - Clojure może być używany w standardowym cyklu kompilacji-testowania-wdrażania, ale w rzeczywistości bardziej naturalne jest używanie REPL do interaktywnego programowania, modyfikując działające środowisko kodu podczas pracy. Na przykład używam Incantera, aby móc drukować wykresy i wizualizować dane w locie, gdy rozwijam się, aby zobaczyć wyniki serii.
  • Interoperacja Java - Interakcja Java Clojure jest bardzo skuteczna. Obiekty Clojure są obiektami Java i odwrotnie, więc wywoływanie interfejsów API i bibliotek Java jest bardzo proste, gdy tylko są potrzebne. Daje to wszystkie zalety całego ekosystemu Java bibliotek i narzędzi.
  • Dobra społeczność - społeczność Clojure jest niewielka, ale dynamiczna, przyjazna i szybko się rozwija. Wiele świetnych projektów typu open source, takich jak Incanter (obliczenia statystyczne) lub Ring / Compojure (framework serwera WWW) lub Przeciwnie do ruchu wskazówek zegara (wtyczka Eclipse IDE)
mikera
źródło
Mikera, właśnie o to prosiłem. Twoja firma pozostawia Java jako podstawowy język programowania aplikacji i zamiast tego używa Clojure. Zgadzam się z Tobą, że JVM nie zniknie, szczególnie w przypadku niektórych firm inwestujących w inne języki, które działają na JVM. Czy mógłbyś podzielić się nieco więcej na temat tego, co było przyczyną decyzji o użyciu clojure jako głównego języka programowania?
Augusto
Jasne, dodałem komentarz na temat tego, dlaczego w szczególności Clojure (rozważałem również Scalę, która również była bardzo obiecująca, ale Clojure wygrał z wąskim marginesem ze względu na Lisp-ness)
mikera
Dziękujemy za wyjaśnienie, dlaczego Twoja firma zdecydowała się na użycie clojure!
Augusto,
7

Wszystko zależy od klienta.

Java zawsze będzie miała swoją małą niszę, w której ludzie będą się nią interesować z tego czy innego powodu, z tych samych powodów, dla których ludzie korzystają z .php lub .net, ale ostatecznie zależy to od wymagań i preferencji klienta.

Jeśli klient powie ... Chcę, aby ta aplikacja była w języku Java ... Czy możemy powiedzieć, że nie? prawdopodobnie nie ... jeśli powiedzą, że tak naprawdę nas to nie obchodzi ... czy zamierzamy napisać to w Javie? prawdopodobnie nie, ale to tylko spekulacje.

Mamy aplikacje napisane w Javie, które mają długą historię, ale wygląda na to, że klient skrupulatnie zastępuje WSZYSTKO marką Windows .... wyrocznia serwera sql ... unix / linux z serwerem 2008 ... i php i java z .net.

Jeśli tak się stanie, to tak ... chyba że pojawi się nowy klient i powie: hej ... chcemy, żeby to napisano w Javie ... będziemy używać .net.


źródło
Duży detalista samochodów w USA robi coś podobnego, zaczyna budować większość projektów typu greenfield w rubinie, a nie w Javie.
Augusto
1

Po pierwsze, nie pracuję w firmie produkującej oprogramowanie.

Ok, używamy Oracle jako naszej głównej bazy danych, w której przechowywane są wszystkie ważne informacje. Z tego powodu planujemy nadal używać Javy do wszystkiego, co ma związek z Oracle. Przejęcie firmy Sun przez firmę Oracle stanowi dla nas impuls do dalszego korzystania z języka Java do wszystkiego, co jest związane z Oracle.

Ale wszystkie aplikacje komputerowe są napisane w języku C #, ponieważ wszystko jest oparte na systemie Windows.

niesamowite
źródło
0

Czy Twoja firma myśli o przejściu z Java do innej technologii?

Aby odpowiedzieć na twoje pytanie. Nie.

Jak każdy programista Java wie ...

W firmach o znacznych rozmiarach generalnie to nie programiści decydują o takich kwestiach, jak to, czy firma powinna odejść od Javy i przejść na coś innego. A dla typów, które podejmują te decyzje, ważne są inne czynniki niż te wymienione na liście.

... przyszłość Java jest dość niejasna, zwłaszcza że Oracle chce zarabiać na JVM.

Przeciwnie, myślę, że przyszłość jest jasna. Ewolucja Java będzie kontynuowana w wolnym, ale stałym tempie, a podstawowe technologie SE i EE będą nadal bezpłatne. Dla mnie jedynym prawdziwym obszarem niepewności jest to, co stanie się z walką między Oracle a Google. Ale tak czy inaczej, spodziewam się, że Android / Davlik będzie prosperować jako alternatywa dla Java ME ... ale tylko na platformy mobilne.

Java jako język była również przestarzała w ciągu ostatnich kilku lat, niewłączenie zamknięć jest jednym z przykładów (który może być zawarty w java 1.8).

Może to irytować programistów, ale „zastój” jest w rzeczywistości konsekwencją zwrócenia uwagi przez Sun / Oracle na to, czego chce biznes ... język / platformę o długoterminowej stabilności.

Jednocześnie niektóre nowe technologie, takie jak Ruby, Scala i Groovy, są wykorzystywane do dostarczania złożonych witryn.

Ponownie, z punktu widzenia zarządzania, jury decyduje, czy technologie te są lepsze we wszystkich obszarach.

  • Czy deklarowany wzrost wydajności naprawdę da się udowodnić w perspektywie długoterminowej?
  • Czy występ już tam jest? Skalowalność Narzędzia i biblioteki stron trzecich?
  • Czy mogą rekrutować doświadczony personel?

Decyzja firmy o przejściu na nowy język wiąże się ze znacznymi kosztami i ryzykiem, zwłaszcza jeśli w języku „starszym” istnieje znaczna ilość istniejącego kodu.

Stephen C.
źródło
@Augusto - odpowiedziałem na twoje pytanie; patrz pierwsze zdanie. Czy jesteś teraz szczęśliwy?
Stephen C