Leciwe cechy Javy [Dyskusja]

0

Czy to zagmatwane programowanie obiektowe w Javie jest naprawdę lepsze od tego z Pythona, Ruby czy Go? Serio? Co w nim takiego łatwego i fajnego?

0
Złoty Orzeł napisał(a):

Czy to zagmatwane programowanie obiektowe w Javie jest naprawdę lepsze od tego z Pythona, Ruby czy Go? Serio? Co w nim takiego łatwego i fajnego?
oczywiscie ze tak, chocby ze wzgledu na dobre narzedzia (co wynika z silnego, statycznego typowania i oczywiscie popularnosci). w takim srodowisku duzo latwiej zachowac dyscypline a jesli jej nie ma to zrefaktorowac. fajnego to niekoniecznie, no ale co kto lubi, ja preferuje ten mniej zagmatwany kod, niezaleznie od jezyka ;)

0

Nie powiedział bym że Java jest prostsza i przyjemniejsza, a na pewno mniej zagmatwana obiektowo od Pythona, Ruby czy Javascript. Masz tu odpowiedzi fachowców z branży którzy określają prostotę nauki wyboru języka programowania i Java jest zawsze na końcu w skali trudności nauki zaraz przed C++. Radzą zaczynać wejściem w programowanie od Pythona lub PHP. Pan M. Zelent poleca dopiero na samym końcu zabrać się za trudne rozbudowane kobyły korporacyjne typu Java czy C#.

0

lubię Javę i zawsze ją lubiłem (dobre wspomnienia ze studiów), niestety w niej nie pracuję

takie pytanie:

jak to jest z kompatybilnością wsteczną javy?

jeżeli kod był pisany w Java 6, a nagle przyjdzie uruchomić w Java 8 to będą problemy?

na ile % jest kompatybilna wstecznie (50%? 100%?)

0

na ile % jest kompatybilna wstecznie (50%? 100%?)

Tego to chyba twórcy Javy nie wiedzą ;) Odpalałem starsze (bardzo prostackie aplikacje w nowym JRE i nie było problemów). Wydaję mi się, że jak coś nie jest "deprecatated" to kod powinien ruszyć w nowym środowisku.

Java jest fajna i przyjemna, ale wszelkie biblioteki niezależnie czy idziesz w web czy w mobile to jakieś monstrualne kobyły. Szczególnie Java EE, czy nawet "lżejszy" Spring. Liczba modułów, bibliotek, zależności - myślę, że to wszystko przytłacza początkujących. Ktoś tu pisał, że Java jest jednym z trudniejszych języków. Sam język może nie, ale ten cały "eko system" to już wymaga wielu lat poznawania. Spotykam się z opinią, że w Javie jest dużo "czarów i magii" - w sensie, że dużo rzeczy odbywa się w niezrozumiały sposób (to opinia nie moja, a zasłyszana).

1
NieGooglujMnie napisał(a):

lubię Javę i zawsze ją lubiłem (dobre wspomnienia ze studiów), niestety w niej nie pracuję

takie pytanie:

jak to jest z kompatybilnością wsteczną javy?

jeżeli kod był pisany w Java 6, a nagle przyjdzie uruchomić w Java 8 to będą problemy?

na ile % jest kompatybilna wstecznie (50%? 100%?)

Mogę odpowiedzeć na to pytanie - bo robię to dość masowo....

Generalnie z wsteczną kompatybilnością kodu "aplikacji" jest mało problemów. Najwięcej problemów było przy przechodzeniu z java 1.4 do 5.0.
Normalnie pomaga przekompilowanie kodu (w sumie to nawet nieczęsto trzeba) i zwykle jest dobrze. Nawet powiem, że jest zaskakujaco dobrze! i nawet deprecated to tylko straszak - do tej pory mało rzeczy wypadło naprawę - mimo gróźb.
(szczerze, to nawet nie pamiętam nawet jednego ficzera co by wypadł z JDK... ale pamięć nie jest moją mocną stroną)

Problem bywa chwilowy z wszelkimi frameworkami, aplication serwerami które dorzucają magię (JavaEE, Spring, OSGi) typu analiza i manipulacja bajtkodu. Z narzędziami do monitoringu itp. Tu zwykle twórcy frameworku muszą się dostosować i czasem trzeba chwilkę poczekać na jakąś wersję serwera. Ale potem jest OK! (Od dawna wszystkie (prawie) główne serwery i frameworki są przystosowane do Javy 8.)

Java 9 ma szansę wprowadzić więcej problemów (zwłaszcza frameworkom i serwerom) - ale zobaczymy.

(Niestety z powodu jednego durnego serwera EE - do jasnej ! mam całą grupę projektów, które mi teraz tkwią na Java 6 !!! (ok, jest więcej przyczyn, m.in security)).

0

To zapytam znawców tematu, jaki teraz nowoczesny framework na topie poza Swing jest do Javy 8? Play a może kierunek na JavaFX?

0
Szklany Pomidor napisał(a):

To zapytam znawców tematu, jaki teraz nowoczesny framework na topie poza Swing jest do Javy 8? Play a może kierunek na JavaFX?

Nie piszesz dokładnie do czego framwework -Swing i JavaFX do dekstopu (JavaFX jakąś tam niszę ma).
Play to Web, w webie się więcej dzieje - ale na pewno Play nie jest bardzo popularny w Javie.

A co do web:

Modne nadal jest nie pisanie weba w Javie. (Może na wiosenną kolekcje będzie coś nowego, ale niewiele na to wskazuje). Server Java serwuje JSON + Sockety. A całość klienta JavaScriptem (TypeScriptem) z jakimś frontendowym frameworkiem - (jest ich tylko z 1500 więc łatwo wybrać). Brzmi może durnie, ale jest naprawdę całkiem wygodne. Serio.

0

To chyba wlasnie kompatybilnosc wsteczna wlasnie zabija dynamiczny rozwoj jezykow ;) ale moze to i dobrze.. ;)

0

C++ kompatybilność wsteczna jakoś nie zabiła, rozwija się standard C++17 jest odśmiecacz pamięci podobny do Javy i inne ficzery. Przy okazji możemi ktoś napisać jakiego frameworku użyto do napisania aplikacji WhatsApp , Java, Android-SDK i co?

0

a niby czemu c++ mialby umrzec skoro nawet cobol jeszcze dogorywa ;)

Slyszalem plotki, ze C++ ma miec cos w stylu goroutines ;)

0

W programowaniu liczy się szybkość wykonania...
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=nbody

0
Mały Młot napisał(a):

W programowaniu liczy się szybkość wykonania...
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=nbody

Gdyby każdy był wymiataczem we wszystkich językach to tak. Ilu znasz programistów którzy potrafią taki asm napisać że będzie wydajniejszy niż gcc? W programowani liczy się żeby spełnić cele i kryteria narzucone przez klienta, kropka.

0
Mały Młot napisał(a):

W programowaniu liczy się szybkość wykonania...
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=nbody

A dobór narzędzi do odpowiedniego zadania się nie liczy?
Chyba nie ma języka, który byłby 'do wszystkiego' ...

3
Mały Młot napisał(a):

W programowaniu liczy się szybkość wykonania...
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=nbody

Sprawa wygląda tak, że Java osiąga najlepszy czas 22.53s, natomiast najszybsza przenośna wersja C++ osiąga 19.20s. Wszystkie szybsze wersje C++ są nieprzenośne, bo wykorzystują bezpośrednio instrukcje procesora - widać to po kawałku kodu: #include <immintrin.h>. Wersja C++ która osiąga 19.20s ma w opcjach kompilacji między innymi -O3 -fomit-frame-pointer -march=native -mfpmath=sse -msse3, więc kompilator miał wolną rękę, by samemu wykorzystywać rozszerzony zestaw instrukcji. Mimo tego cudów nie zrobił. Należy też pamiętać, że w C++ie nie dostajemy w standardzie sprawdzania indeksów tablic czy sprawdzania czy wskaźniki są nullowe.

Ale ta mała różnica w wydajności i tak nie ma znaczenia, bo w biznesie liczy się spełnienie żądań klienta, a nie pompowanie własnego ego. Mimo iż w Javce pisze się wyraźnie szybciej niż w C++ie to i tak mało który poważny projekt nadąża za wymaganiami funkcjonalnymi klientów i regulatorów. Na pewno nie ma czasu na robienie mikrooptymalizacji. Wyjątków od tej reguły jest procentowo niewiele.

0

@jarekr z tego co czytam to każdy pisze że Play to bardziej do Scala pasuje, a od wersji 2.0 to już całkowicie olał Jave. Ale jak Spring i Hibernate to norma wśród pracodawców to ok, trzeba się z tymi starociami pogodzić i zaznajomić. Mam pytanie czy jest praca w czystej Javie bez żadnych frameworków, poza Androidem, gdyż Android też ma jakieś swoje dodatkowe opcje przyspieszające pisanie apek. Nie wiem może pisanie oprogramowania do pralek, lodówek i tv typu Bosch, LG, Samsung wymaga jedynie czystej Javy?

0

@jarekr z tego co czytam to każdy pisze że Play to bardziej do Scala pasuje, a od wersji 2.0 to już całkowicie olał Jave.

Podaj źródło. Play 1.x jest napisany w Javie. Play 2.x jest napisany w Scali, ale ma w pełni funkcjonalne API Javowe. Akka też ma API Javowe. Sam Lightbend mocno stawia na promowanie swojego stosu technologicznego wśród Javowców, bo takie ma biznesowe nastawienie. Wcześniejsze nastawienie tylko na Scalę nie sprawdziło się z biznesowego punktu widzenia.

8
Burdzi0 napisał(a):

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ń?

"Wydajność składni" - ciekawe określenie. ;) Ale wbrew pozorom ma ono jakiś sens i jest to dość poważne zagadnienie.
Generalnie składnia języka składa się z elementów, mechanizmów i koncepcji wspólnych dla wielu języków. Instrukcje warunkowe, pętle, klasy, funkcje, procedury, konstruktory, właściwości, interfejsy, rekordy, dziedziczenie, wielodziedziczenie, pattern matching, tuple, wskaźniki, przekazywanie przez wartość/referencję, lambdy, delegaty, domknięcia, inferencja typów, typy generyczne, itd.
Java od zawsze miała tych elementów bardzo mało - dzięki temu jest prosta, ale jest też mało ekspresywna - bo trzeba napisać więcej kodu niż w wielu innych językach, aby osiągnąć pożądany efekt. Do tego Java rozwija się wolniej niż inne języki (w sensie wolniej zdobywa nowe mechanizmy) i jest bardzo konserwatywna, więc nie dziwi mnie, że ktoś określił ją mianem "leciwej".

I teraz należy sobie odpowiedzieć, czy to dobrze, czy to źle?

  1. Prostota. Generalnie jest to zaleta - po pierwsze dlatego, że czyni język łatwym do nauczenia się, po drugie dlatego, że kod, który polega na małym zestawie możliwych konstrukcji dość łatwo się czyta (o ile nie został zagmatwany siecią dziwnych zależności), nawet jeśli jest go dużo.

  2. Rozwój. Generalnie rozwój jest dobry, ale też nie można przesadzać. Niektóre języki rozwijają się dziwnie i wprowadzane są do nich konstrukcje czyniące język kompletnie niespójnym (a więc zmniejszające jego czytelność) i niepotrzebnie go komplikujące (a więc zwięszające trudność nauki/próg wejścia). Lepiej chyba rozwijać się wolniej niż popełniać tego typu błędy.

  3. Ekspresywność. Kod to zło. Generalnie im mniej kodu tym lepiej, bo zmniejsza to szansę na błędy, mniej czasu trzeba przeznaczyc na jego czytanie, łatwiej poprawiać błędy czy wprowadzać nowe funkcje. Mała ekspresywność to zło.

Aby napisać czytelny kod, który realizuje jakieś zadanie, najlepiej mieć prosty i ekspresywny język. Czyli nie Javę. Jeżeli nie przeszkadza nam pisanie boileplatu, i nie jesteśmy zainteresowani mechanizmami bardziej zaawansowanymi niż pętle i ify (czyl jesteśmy mainstreamowymi programistami), to Java jest chyba optymalnym wyborem.

Burdzi0 napisał(a):

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 ucz się programowania w Javie, ucz się programowania w ogóle. Czyli: dzielenia problemów na podproblemy, organizacji kodu w klasy i metody o jednych odpowiedzialnościach, reużywania elementów, sensownego nazewnictwa. I nie kopiuj - zawsze jak będziesz chciał skopiować jakiś kawałek kodu, to zastanawiaj się, czy nie da się tego zrobić bez kopiowania.
Przy takim podejściu kod nawet w JS wygląda prawie sensownie.
Niestety, ale nasza branża się bardzo dynamicznie zmienia, frameworki żyją góra kilka lat (w JS kilka dni). Do tego wiele zależy od mody i marketingu dostawców technologii.

Nie szukam, znalazłem - pytanie brzmi czy nie był to strzał w kolano.

Na pewno nie. W Javie dużo już zostało napisane, i wiele jeszcze zostanie napisane. Nie umrze przez kilkadziesiąt lat, i raczej wątpię, żeby przez najbliższe 10 cokolwiek ją dogoniło w oprogramowaniu enterprise. Pisanie w niej to dobry wybór pod wzgledem zawodowym. Jeżeli jej ubóstwo Ci nie przeszkadza, to w ogóle się nie masz czym przejmować.

Ale tak ogólnie to ja nie jestem dobrym doradcą w kwestii wyboru języka pod karierę, bo sam niczego nigdy nie wybierałem. Po prostu zacząłem pisać, a inni mi zaczęli za to płacić.

@Burdzi0, jak sam pewnie już zauważyłeś - trudno jest merytorycznie rozmawiać o Javie, bo programiści tego języka w zdecydowanej większości są niemerytoryczni. Czego zresztą dowód masz w tym wątku - sami zdołali siebie powyzywać od debili i bydlaków, a gościa, który ma prawie 20 lat doświadczenia w Javie nazwano hejterem, bo myśli trzeźwo i widzi w niej wady.
Do tego zdołali obrazić także Ciebie, bo zamiast łykać bezrefleksyjnie propagandę postanowiłeś pomyśleć samodzielnie i podzelić się swoją refleksją. Chyba po prostu nie pasujesz do ich grona.

Żeby rozmawiać merytorycznie trzeba mieć wiedzę i doświadczenie. Ja w trakcie swojej kariery pracowałem dla kilkunastu firm z różnych branż, i w żadnej nie było homogenicznego środowiska, w którym wszystkie projekty stały w jednej technologii. Zawsze jakoś ze sobą koegzystowały projekty w Javie, PHP, Pythonie, RoR, Node.js, .NET, Oracle Forms, VB6 i wielu, wielu innych. Tutaj generalnie za ekspertów próbują uchodzić ludzie, którzy pracowali dla 2-3 firm klepiąc fasolki, i na tej podstawie wygłaszają opinie, że tylko Java ma sens.
No i jeśli do tej ignorancji oraz braku doświaczenia dołożysz:

  1. Ograniczony umysł - innym określeniem nie da się nazwać ślepej wiary w świetność jedynego języka jaki się zna.
  2. Dysonans poznawczy - ktoś tu ma straszny ból tyłka o pozycję C# w TIOBE).
  3. Sporą hipokryzję - wielu Javowców ma tendencje do gardzenia "cukrem składniowym" innych języków, ale jak te same cechy z ogromnym opóźnieniem trafiają do Javy (np. propertisy i type inference z Lomboka, albo lambdy i stream API), to nagle uznają je za cud techniki i dowód na nowoczesność Javy. :D
  4. Kompletna paranoję - w każdym wątku na forum, w którym ktoś krytykuje w jakikolwiek sposób Javę, ich reakcja jest natychmiastowy atak na C#, nawet jeśli nikt wcześniej o tym języku nawet nie wspomniał.
  5. Obłudę - nawet ci Javowcy, którym Java z uwagi na swoją toporność przestała pasować i piszą w Scali, nadal w każdej dyskusji na temat wad Javy twierdzą, że to idealny język.

To po prostu zastanów się, czy na pewno chcesz mieć z nimi coś wspólnego. ;)

0

Dysonans poznawczy jest wtedy, gdy ktoś nie lubi Javy, a podnieca się Javiwzmami w swoim języku :P

0

@somekind Jestem naprawdę pod wrażeniem. To jest najdłuższy, najbardziej treściwy i chyba najrzetelniejszy post jaki widziałem na forum. Serdeczne dzięki, odpowiedziałeś na wszystkie moje pytania (nawet te, których na forum nie zadałem). Będę do tego posta często wracał ;)

0

No muszę przyznać, że niektóre "nowości" Javy to stare rozwiązania dobrze znane z innych języków. Zobaczymy co za 270 dni przyniesie "dziewiątka"...

0
Burdzi0 napisał(a):

@somekind Jestem naprawdę pod wrażeniem. To jest najdłuższy, najbardziej treściwy i chyba najrzetelniejszy post jaki widziałem na forum. Serdeczne dzięki, odpowiedziałeś na wszystkie moje pytania (nawet te, których na forum nie zadałem). Będę do tego posta często wracał ;)

Tekst jest długi i nawet zabawny, ale z rzetelnością to nie przesadzajmy ;) (Prawie) Każdy chwali swoje, a wydźwięk jest taki, że C# nie ustępuje Javie - co jest absolutną nieprawdą :D

0
somekind napisał(a):

Jeżeli nie przeszkadza nam pisanie boileplatu, i nie jesteśmy zainteresowani mechanizmami bardziej zaawansowanymi niż pętle i ify (czyl jesteśmy mainstreamowymi programistami), to Java jest chyba optymalnym wyborem.

no już bez przesady. jaki boileplate? przecież jest lombok?
no i same pętle i ify - przecież java8 to nie są same pętle i ify. dodali nawet Optionala.

Ja pozostawię post @somekind'a bez komentarza, bo wydał mi się chamski w stosunku do ludzi programujących w javie, że oni są inni albo że te środowisko jest chamskie czy fanboyskie. A tak nie jest i wystarczy choćby spojrzeć na top3 na 4progarmmers w tym miesiącu - wszystkie najbardziej pomocne osoby piszą głównie w javie. Dlatego bo to są pomocni ludzie

3

Dopiero 3 odpowiedzi na post @somekind'a, a już potwierdzenie znalazły 2 punkty przez niego wymienione.

0

Tekst jest długi i nawet zabawny, ale z rzetelnością to nie przesadzajmy ;) (Prawie) Każdy chwali swoje, a wydźwięk jest taki, że C# nie ustępuje Javie - co jest absolutną nieprawdą :D

Trzeba być leszczem żeby dawać się trollować na java vs c#, albo wierzyć że ms otworzy się na inne systemy operacyjne.

0

@somekind

a tu się potwierdził trzeci. ;)

A to czemu? Uważam że java vs c# jest bez sensu bo c# nie ma za cel być wieloplatformowym, a przynajmniej nie jest.

3
Świetny Kaczor napisał(a):

Tekst jest długi i nawet zabawny, ale z rzetelnością to nie przesadzajmy ;) (Prawie) Każdy chwali swoje, a wydźwięk jest taki, że C# nie ustępuje Javie - co jest absolutną nieprawdą :D

No właśnie. Nie porównywałem niczego z Javą, żadnego C# nie chwaliłem, a Javowcy wszędzie ten język widzą. To już chyba nie jest zwykła paranoja, to jakieś urojenia prześladowcze. :D

karolinaa napisał(a):

no już bez przesady. jaki boileplate? przecież jest lombok?
no i same pętle i ify - przecież java8 to nie są same pętle i ify. dodali nawet Optionala.

No, jakieś osiem lat później niż u konkurencji, która według pokrętnej logiki niektórych z Javy zrzyna. :)

Wybitny Terrorysta napisał(a):

A to czemu? Uważam że java vs c# jest bez sensu bo c# nie ma za cel być wieloplatformowym, a przynajmniej nie jest.

Ignorowanie standardów ECMA, istnienia Mono czy .NET Core, to przeczenie faktom. A przeczenie faktom, które nie pasują do światopoglądu to właśnie dysonans poznawczy.

0

Ignorowanie standardów ECMA, istnienia Mono czy .NET Core, to przeczenie faktom. A przeczenie faktom, które nie pasują do światopoglądu to właśnie dysonans poznawczy.

Mono mogę spokojnie zignorować, .NET Core nie oceniam ale że tak się spytam jaki ma on związek z pierwotnym celem c#. Twierdzę że ms od początku olewał wszystko co nie windows i nie wmówisz mi że to "dysonans poznawczy".

0

Ma mnie przekonać do tego jakiś anonim? Rlly? - Burdzi0 dzisiaj, 14:30

Jeśli wierzysz, że tylko zarejestrowani użytkownicy piszą sensownie, a "anonimowi" bredzą, no cóż...:)

0

Kilka osób broni C# i w ogóle dot net...

__Jak dla mnie __ platforma NET straciła swoją siłę i zalety wraz z końcem aplikacji desktopowych. W WinFormsach pracuje się genialnie, w WPF też nieźle, ale już w webowym ASP MVC już średnio - jakoś mi to nie podeszło zupełnie, choć na pewno znajdą się zwolennicy klepania stron w ASP MVC. Jedyne co się może podobać w platformie NET to IMO XAMARIN, ale czy się przyjmie to też trudno powiedzieć (jeszcze trochę mu brakuje do stabilnej, pewnej pracy). Samo Visual Studio też jest świetnym IDE (to IMO najlepszy produkt Microsoftu), ale co z tego, dobre IDE to za mało.

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