Leciwe cechy Javy [Dyskusja]

0

Czytam sobie Programistę najnowszego i napotkałem w artykule o Kotlinie następujące zdanie:
Java jest już językiem mocno leciwym i coraz częściej słyszy się o tym, że potrzebuje ona następcy.
Jakie cechy Javy można uznać za leciwe? Czym się różni Java (jako dosyć rozwinięty język) od nowszych alternatyw na JVM?
Odniosłem wrażenie, że jakoś na siłę tworzy się śmierć Dżawy, bo już bardzo sporo w niej zrobiono.
Jakie są wasze zdania?

0

To taki programistyczny paradoks. Z jednej strony programowanie to czysta logika i pragmatyzm, z drugiej programiści lubią popadać w skrajności własnych preferencji i śmiesznych wojenek. Co za tym idzie potrafią również uśmiercać język 30 letni ignorując fakt że po dziś dzień użytkuje się języki powstałe w latach 50 poprzedniego wieku.

Swoją drogą lepiej było to umieść w Flame, i tak tam pewnie szybko trafi ;)

4

Czym się różni Java (jako dosyć rozwinięty język) od nowszych alternatyw na JVM?

To oczywiste - składnią. Alternatywy powstają, by zaoferować rozszerzoną lub zmienioną składnię. Ta nowa składnia ma zwiększyć produktywność (przynajmniej niektórych) programistów.

Nota bene:
Java to wspólna nazwa na język i platformę. Narzekanie na jedno niekoniecznie oznacza narzekanie na drugie.

1

Ostatnio na PWr jeden z wykładowców powiedział coś w ten deseń: Java to język programowania dla programisty, który mam małą wiedzę ogólną na temat programowania. Czytaj posadzisz Janusza Javy do rozwijania jakiegoś systemu i on nie jest w stanie Ci go rozwalić. Co do przyszłych języków stara się bardzo ułatwić programiście pisanie kodu, żeby taki Janusz usiadł bez umiejętności i napisał coś co będzie działać...

0
Mały Mleczarz napisał(a):

Ostatnio na PWr jeden z wykładowców powiedział coś w ten deseń: Java to język programowania dla programisty, który mam małą wiedzę ogólną na temat programowania. Czytaj posadzisz Janusza Javy do rozwijania jakiegoś systemu i on nie jest w stanie Ci go rozwalić. Co do przyszłych języków stara się bardzo ułatwić programiście pisanie kodu, żeby taki Janusz usiadł bez umiejętności i napisał coś co będzie działać...

Ciekawy jestem w takim razie jaki język (a w sumie grupę języków) uznałby za odpowiednio trudny?
Języki programowania, które teraz powstają są głównie językami przetwarzającymi kod źródłowy na kod bajtowy, zapewniając sobie tym od razu mobilność i wygodę.
Dlaczego Dżawa zostaje tym językiem z czarnej listy? Dlaczego składnia tak bardzo podobna do języka C++ jest już niewydajna, nieaktualna, a Cpp używa się dłużej do dziś dzień?

3

To co mówi większość wykładowców na temat języków i programowania to albo nieprawda, albo prawda, ale jak na rok 1995.

Składnia Javy była bazowana na C++, ale różniła się on niego nawet gdy powstała. Była dużo prostsza a część rzeczy po prostu inna. Na dzień dzisiejszy C++ jest tak mocno rozbudowany, że nie ma co nawet porównywać tych dwóch języków. To że podobny jest for, while czy nawiasy klamrowe i średniki, to tylko wierzch góry lodowej.

Składnia samej Javy rozwija się bardzo wolno na tle innych języków. Gdy microsoft wypuścił C#, był nazywany klonem Javy. Ale przez te wszystkie lata zdrowo wyprzedził Javę w bardzo wielu aspektach. Dość niedawno, po wypuszczeniu wersji 8, nastąpiła mała rewolucja w stronę programowania funkcyjnego i w końcu kod zaczął wyglądać znośnie. Wiele języków taki feature dostało bardzo dawno temu i to czym Javowcy się tak strasznie jarali 2 lata temu, inni mieli już w nawyku. To trochę tak jakbyś teraz zmienił nokię 3310, na pierwszego smartfona z androidem 1.0 i jarał się skokiem technologicznym a Twoi koledzy mieli samsungi s6 czy co tam teraz jest w modzie.

To że Java jest tak wolno rozwijana to jednak czasem zaleta. Wiele osób woli żeby pomiędzy wersjami nie było problemów z kompatybilnością gdy system ma wytrzymać długo. 10 lat dla systemu javowego to nie szczyt możliwości, dlatego jeżeli ktoś chce zbudować system za kilkadziesiąt milionów, to chciałby żeby za parę lat nie było tekstów w stylu "nie da się". Scali np. zarzucano problemy z migracją projektów w starszych wersjach do nowszych.

Co do języków JVM "na czasie":
Kotlin - trochę lepsza składnia, dodano rzeczy których brakuję w javie jak type inference, case class, pattern matching i wprowadzono bardzo fajny system zapobiegania NullPointerException. Mimo tego, nie jest to coś zupełnie innego niż Java. Piszesz w tym w podobny sposób.
Scala - Tutaj zmienia się bardzo dużo. Sam język jest mocno zmodyfikowany, ale stos technologiczny również. Fajnie się w tym pisze proste programy, ale nie wypowiem się na temat pracy w tym bo brak mi doświadczenia.

Z Javą to jest taki śmieszny paradoks, że jest przestarzałym językiem dla debili którzy nie umieją programować, śmierć przepowiadana jest każdego roku i co chwila pojawia się jakaś technologia która jest lepsza i ją zastąpi, a mimo tego pracy dla Javowców jest od groma i jeszcze trochę.

0

@krzysiek050

Z Javą to jest taki śmieszny paradoks, że jest przestarzałym językiem dla debili którzy nie umieją programować, śmierć przepowiadana jest każdego roku i co chwila pojawia się jakaś technologia która jest lepsza i ją zastąpi, a mimo tego pracy dla Javowców jest od groma i jeszcze trochę.

Właśnie odpowiedziałeś na ten paradoks - jest to język dla debili, którzy nie umieją programować, więc dlatego Javowców jest od groma...
Powiedz mi tylko jeszcze jedno (albo podaj jakieś dobre źródło, bo ciężko znaleźć odpowiedź na takie pytanie):
Co według Ciebie definiuje język nie dla debili?
Jakie cechy tej znienawidzonej przez mnóstwo ludzi Dżawy tak bardzo kłują w oczy?
Jako gówniarz, który się jej uczy i nie ma jeszcze pojęcia o jako takich ogólnie pojętych zaletach i wadach różnych języków programowania, wnioskuję tylko z tego co gdzieś przeczytam lub usłyszę.
Jedni mówią, że ten język to jeden wielki ProblemFactory, inni, że hodowla NullPointerException a jeszcze inni złośliwi, że rozleniwia zarówno składnia jak i GC...
Zawołam również @somekind, który też pewnie z chęcią się wypowie (mam nadzieję na ciekawą rozmowę merytoryczną, a nie flame), sądząc po jego postach na forum :P

4

prawda jest taka, że aktualnie sprawdzony i najlepszy standard składni w programowaniu
to składnia wywodząca się z języka C.

i wszystkie jeżyki od C++, C# do javy itd z tego wzięły, to on jest protoplastą.

dlatego jak ktoś zna tą składnie da się dość prosto lawirować między tymi językami
i nie wprowadza się zbytniego zamieszania.

wszystkie zabawki typu scala czy kotlin mogą się schować.
swoją drogą Kotlin - język w którym nawet nie widać co zwraca metoda i musieli oczywiście jak to teraz
jest w modzie odwrócić klasyczne podejście typ_zmiennej nazwa_zmiennej - uwaga!
typ zmiennej jest po nazwie zmiennej po dwukropku jak w typescript XDDDD

to tylko pokazuje nad którym językami siedzą fizycy,hakerzy i poeci programowania
a nad którym frontendowcy i pseudo hipsterzy.

oprócz tego Java jest prosta, Java jest genialna i najlepsi hakerzy na świecie, którzy piszą systemy
bankowe wybierają właśnie ten język. Można sobie gadać, można sobie hejcić, ale
prawda jest taka, że nie ma obecnie lepszego wyboru do dużych aplikacji biznesowych.

3

Piękna propaganda...

karolinaa napisał(a):

i najlepsi hakerzy na świecie, którzy piszą systemy
bankowe wybierają właśnie ten język. .

W takim razie wymień dwóch.

7

@jarekr000000 nie no bez żartów, większość ofert pracy w HFT to jest C++ albo Java, albo oba. Nie, nie jest to ani Scala ani Haskell. Pewnie trudno wysyłać co na giełdę bez zależności od zewnętrznych serwisów i skutków ubocznych ;) A może jest już implementacja Disruptora w Scali?

Ciekawostka: CERN i ESA większość softu klepie w C, Javie i Pythonie (poza Flight Software bo to raczej Ada). Raczej nie dlatego że są najlepsze, tylko dlatego że są w miarę stabilne, w przeciwieństwie do hipsterskich kolejnych odsłon javascriptu nie znikną za 3 miesiące. Są dodatkowo w miarę proste (ciekawe ile osób byłoby w stanie napisać coś na 10000+ linijek w Haskellu) i nie trzeba zatrudniać samych A-playerów jak Wojciech S., kolega @jarekr000000 albo Mirosław Z., można zatrudnić takiego @maszynaz i też sobie poradzi. No i trudno konkurować z liczbą dostępnych bibliotek, chociaż tutaj np. Scala i inne JVMowe języki mogą z tego korzystać, stąd też ich popularność. W innym wypadku bardzo cieżko byłoby im się przebić do mainstreamu.

Niemniej do "prywatnych" zastosowań są języki bardziej eleganckie niż Java, z większą siłą ekspresji. W efekcie zamiast 100 linijek piszesz 10, kod jest bardziej czytelny i pisze się wygodniej.

0

No sami powiedzcie i po co się męczyć z tą leciwą Javą gdzie opanowanie w niej obiektówki to jakiś koszmar, jak programista javascript zarobi więcej. Sami zobaczcie, zarobki brutto programistów w danych językach z marca 2016. Może teraz Scala, Kotlin drożej płacą z takich programistów, ale zauważyłem, że narobiło się dużo konkurencji wśród developerów od Javy. Wcale nie atakuje Javy, nie atakujcie.
http://www.pasjonaciinnowacji.net/puls-wynagrodzen-zarobki-programisty-marzec-2016/

0

@karolinkoo, no dziwne co piszesz, ponieważ w książkach o hakingu wymienione są tylko trzy języki czyli C, Lua i Python. Nie ma tam żadnych Java, C++, wszystkie skrypty i exploity są pisane w tych trzech językach programowania co napisałem. No może do łamania stronek przydałoby się jeszcze PHP ogarniać.

1
Krzywy Mleczarz napisał(a):

jak programista javascript zarobi więcej.

Z tego co widzę oferty pracy to nie jest to prawda.

0

@karolinkoo i tylko ta Java Ci wystarcza , nie musisz znać javascript, Pythona czy innego języka do oskryptowania - plus jakieś html5, css, sql? Piszesz tylko w samej Java nonstop.

0

Cieszę się, że młodzi ludzie zastanawiają się "co z tą leciwą Javą" - dzięki temu będą wybierać javascripta czy inne kotliny i na rynku pracy zostaną tylko dobrzy programiści Javy :).
Smutne natomiast jest to, że twórca wątku zamiast wziąć się za naukę czegokolwiek szuka czegoś, co jest teraz "na topie".
Podejrzewam że "pan", który pierwszy rzucił że java to język "dla debili" sam od 30 lat pewnie siedzi na uczelni i w życiu nie napisał ani linijki produkcyjnego kodu.

Więc pozdrawiam wszystkich i idę dalej zarabiać grubą kasę w "leciwej javie".

Pozdro 600et.

0

@Black007 I tu mnie Pan bardzo zdenerwował, a i tak mam bardzo słaby dzień.

Smutne natomiast jest to, że twórca wątku zamiast wziąć się za naukę czegokolwiek szuka czegoś, co jest teraz "na topie".

Nie, proszę Pana, g**no Pan wie. Uczę się Javy od ponad roku (a może i dwa lata niedługo wyjdą), a moje wątpliwości są spowodowane tym, że chciałbym być dobrym programistą, tj. mieć doświadczenie w technologii, którą się posługuję. A nie jak Pan sam stwierdził szukać czegoś na "topie". Jak się za coś biorę to na całego. Mam prawo martwić się tym, że poświęcę najbliższe n-lat na naukę programowania w Javie, a jak przyjdzie co do czego to będą potrzebowali kompletnie innej wiedzy.
Nie szukam, znalazłem - pytanie brzmi czy nie był to strzał w kolano.

Następnym razem polecam zastanowić się nad ocenianiem osoby zaledwie po jednym poście. Nawet Pan nie wie jak ciężko nie mieć do kogo ust otworzyć, kogo zapytać o jakiś szczegół, detal, na który ciężko znaleźć odpowiedź w necie. Bycie samoukiem z 0 pomocą kogokolwiek wymaga nie lada effortu i nie ukrywam, że czasami mi się nie chce. Więc mnie nie wkurzaj pieprzeniem o nauce czegokolwiek.

3

@Burdzi0 człowieku po prostu ucz się i nie przejmuj jakimiś tekstami o "leciwości" języka. Chcesz być dobrym programistą? To w pierwszej kolejności nie opieraj się na opiniach a na konkretnych faktach, np. że po dziś dzień używa się języki sprzed kilkudziesięciu lat oraz że Java pozostaje nadal bardzo popularnym językiem. Poza tym jeśli już mamy nazywać jakieś języki leciwymi czy przestarzałymi to można to podsumować tak jak mówi się o programach- język programowania staje się leciwy kiedy zostaje wypuszczony. A więc o każdym języku można powiedzieć że jest leciwy. Zawsze będą się pojawiać nowsze języki i zawsze jeden język będzie miał pewne feature'y szybciej od innych. Równie dobrze ktoś może wyskoczyć z tekstem że poza LISP każdy język jest dla debili, tylko jakie to będzie miało znaczenie?

0
Burdzi0 napisał(a):

Czytam sobie Programistę najnowszego i napotkałem w artykule o Kotlinie następujące zdanie:
Java jest już językiem mocno leciwym i coraz częściej słyszy się o tym, że potrzebuje ona następcy.

To jest zdaje się podstawowe założenie twórców wielu alternatywnych języków JVM (no może poza Jython).

Na ile im się udaje stworzyć coś lepszego - trudno powiedzieć:

  • Groovy: pisze się ze 2x krócej, ale twórca języka sam się od niego odwrócił na rzecz Scali: http://bit.ly/2eg4q6d
  • Scala: ponoć nowocześniejsza składnia, ale niestabilne środowisko (chodzi chyba o płynne API) i topniejące zainteresowanie: http://bit.ly/2dJARbs
  • Kotlin: mały wymagany runtime, ponoć lepsza składnia, ale znowu język jednej firmy, póki co dopiero co wyszła wersja 1.0: http://bit.ly/2dXuodq

Java jest dużo bardziej przejrzysta od C++ i na dzień dzisiejszy trudno o bardziej popularny i bogatszy w rozwiązania język dla wielu zastosowań.
Owszem, do poszczególnych zadań są lepsze języki, ale ich zastosowanie jest bardziej ograniczone. Ze względu na rynek, efektywność programowania, wydajność, przenośność czy dostępność bibliotek.

BTW, nie wiem co robi na 4 miejscu C# w TIOBE. Jest to na pewno jakiś fenomen (czytaj anomalia), że ten język jest wyżej punktowany w tym zestawieniu niż np. JavaScript.

1

Jak co robi C# na 4 miejscu w Tiobe, Bil Gejts dał łapówki jak to robił zawsze, wtykając dziurawe okienko wszędzie tam gdzie się da. Ja tam nigdy nie przepadałem za językami programowania od korporacji. Nawet taki Ceylon czy Vala promuje Red Hat Linux. Przypomina mi to trochę politykę intela, jak opłacał sklepy aby ignorowali AMD. Ale ten kto ma kasę rządzi, Tiobe pewnie jakaś skromną dotacje dostało od Microsoft, tak jak Apple bierze kod do swojego OS X z FreeBSD. Apropos FreeBSD wyszła ostatnio stabilna wersja 11.

0

To Java już nie jest językiem przyszłości ?:{ Swoją drogą co z ceylonem, nikt go nie lubi czy coś?

3

@Black007 Zdecyduj się, mam 16 lat czy od 30 lat pracuję na uczelni? Bo mi się obliczenia nie zgadzają :).

@Burdzi0

Właśnie odpowiedziałeś na ten paradoks - jest to język dla debili, którzy nie umieją programować, więc dlatego Javowców jest od groma...
Napisałem że pracy dla Javowców jest od groma. Czyli że Javowców brakuje na rynku w stosunku do miejsc pracy.

Ale ogólnie wyraziłem się nieprecyzyjnie więc wyjaśnię. Sam nie twierdzę że Java to język dla debili. Jako że sam jestem javowcem, to przez takie twierdzenie nazwałbym sam siebie debilem. Chodziło o fakt masy hejtu na javę w necie z różnego punktu widzenia. Zaczynając od tego że sama składnia jest stosunkowo prosta i logiczna, co przez niektórych może być odczytane jako język dla debili, przez to że wolno się rozwija a kończąc na tonach mitów na temat jej działania. Developerzy innych technologii niż java przewidywali jej rychły koniec wiele razy i gdyby w to wierzyć to byłaby już długo reliktem przeszłości, a tak naprawdę jest to jeden z najlepiej płatnych języków, przynajmniej w Polsce. Podsumowując, do każdej informacji która stwierdza że Java jest kiepska podchodź z dystansem. Jeżeli coś jest kiepskie to ludzie wybierają inne alternatywy i to w tych alternatywach jest praca. Jeżeli co druga oferta zatrudnienia w IT dotyczy programisty Java, to nie może być ona taka zła.

karolinaa napisał(a):

swoją drogą Kotlin - język w którym nawet nie widać co zwraca metoda i musieli oczywiście jak to teraz
jest w modzie odwrócić klasyczne podejście typ_zmiennej nazwa_zmiennej - uwaga!
typ zmiennej jest po nazwie zmiennej po dwukropku jak w typescript XDDDD

To jest akurat nowe podejście i jeżeli trochę popiszesz to zauważysz że wygodniejsze. Po pierwsze typ zwracany nie musi być deklarowany, bo nie zawsze jest taka potrzeba. Czasem można to wyczytać z nazwy metody, a czasem ciało ma 1 linijkę i i tak wiesz co się zwróci. Po drugie, w kotlinie i scali działa type inference, przez co typ zmiennej schodzi na drugi plan i dlatego został przeniesiony za nazwę. Spróbuj kotlina lub scali i zobacz że jest w tym sens. A jeżeli uparcie nie chcesz, to wypróbuj chociaż type inference z lomboka dla javy.

1
vpiotr napisał(a):

BTW, nie wiem co robi na 4 miejscu C# w TIOBE. Jest to na pewno jakiś fenomen (czytaj anomalia), że ten język jest wyżej punktowany w tym zestawieniu niż np. JavaScript.

A tym fenomenem jest dla tego że... ?

2

Dla mnie 'leciwa java' to termin powstaly na skutek utrzymywania starych systemow.
Ale w javie mozna pisac ladnie i przyjemnie majac do dyspozycji dobre narzedzia.
Java 8 i 9, wprowadzenie var itp. Tez sporo poprawi. No i community jest raczej spojne.

Poza tym spojrzcie na Go. Ma robic co trzeba i wedlug wielu przez to jest nudny.
Wiec czy 'fajny' zawsze wystarcza?

Na pewno Java to nie jest jezyk idealny i jak kazde srodowisko wymaga pewnej dyscypliny, zeby zylo sie dobrze.

0

Problem z Javą jest taki, że jest po prostu wolna - chodzi mi o aplikacje z dużą liczbą obiektów. Każda większa aplikacja napisana w Java działa bardzo powoli...

Prawdziwe aplikacje pisane są w C++:
http://www.stroustrup.com/applications.html

0

Nowa wersja C++ 11 jest zupełnie inna od starej - przykład:

 
int my_array[5] = {1, 2, 3, 4, 5};
// double the value of each element in my_array:
for (int& x : my_array) {
    x *= 2;
}
// similar but also using type inference for array elements
for (auto& x : my_array) {
    x *= 2;
}
 
[](int x, int y) -> int { return x + y; }

Cała Lista zmian:
https://en.wikipedia.org/wiki/C%2B%2B11

1

@Burdzi0 Masz, rację, źle Cię oceniłem - na podstawie jednego wpisu. Pewnie zapomniałem, jak sam 10 lat temu szukałem technologii dla siebie.
Moim zdaniem, nie ważne co wybierzesz czy Javę, czy C# czy C++, jeśli będzie cie to kręcić i będziesz w tym dobry, to wszędzie znajdziesz pracę.
Artykułu w gazetach typu programista możesz wsadzić między bajki. Nie przejmuj się tym co jacyś "eksperci" z gazet piszą.

@krzysiek050 - Wybacz, odebrałem to personalnie, sam jestem javowcem od 10 lat i takie wojny były może dobre na studiach po piwie, ale nie na forum dla programistów.

Tak więc jeśli kogoś obraziłem, to przepraszam trafiłem akurat na mój zły dzień. Zgadzam się także w wypowiedzią @vpiotr

0

@Black007
Tylko niestety takie wojny trwają nadal, tylko potrafisz je już olewać. Zobacz 2 posty powyżej Twojego. Te odważne twierdzenia poparte jakże silnymi argumentami. Ty potrafisz to olać bo swoje wiesz, ale nowi nadal biorą je na poważnie.

0

Wpis Uncle Boba na ten temat: https://8thlight.com/blog/uncle-bob/2015/08/06/let-the-magic-die.html Tl;DR; -> wiekszosc rzeczy ktore sie pojawiaja to tak naprawde nowa odslona czegos co bylo juz dawno.

0
WhiteLightning napisał(a):

Wpis Uncle Boba na ten temat: https://8thlight.com/blog/uncle-bob/2015/08/06/let-the-magic-die.html Tl;DR; -> wiekszosc rzeczy ktore sie pojawiaja to tak naprawde nowa odslona czegos co bylo juz dawno.

Tam jest takie zdanie:

My Advice.

Never buy magic! Before you commit to a framework, make sure you could write it. Do this by actually writing something simple that does the basics that you need. Make sure the magic all goes away. And then look at the framework again. Is it worth it? Can you live without it

Najgorzej jak się tego posłucha - szybko się okazuje, że można żyć bez Spring, JavaEE, Hibernate.
Kod jest prosty, testowalny, działa - dramat! Co robić, jak nic się nie chce wywalić? Nawet debug nie jest potrzebny (a taki jest spoko w Eclipse lub IntelliJ...).
A do tego: nie ma nawet czego wpisać do CV! Lepiej się poważnie zastanowić.

4

w sumie to w wiekszosci zgadzam sie z @karolinaa
java jest bardzo prosta, szybka, uniwersalna i ma swietny ekosystem. pozwala tworzyc dzialajacy kod kompletnym gamoniom a ekspertom daje mozliwosc wykazania sie w bardziej ambitnych projektach.
mozna sobie gadac o 'leciwosci' promujac nowe (albo po prostu inne) rozwiazania ale nie zmienia to faktu ze java jest podstawowa platforma dla wielu systemow i co wiecej - wciaz tworzone sa w niej nowe bo po prostu nie ma lepszej alternatywy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1