Witam, przez przypadek zakupiłem książke "Java. Podstawy" Wydanie IX z 2014 roku ktore opisuje wersje Java SE 7, czy przy nauce tej książki mogę zostać wprowadzony w jakieś błędy w związku z tym że mamy już wersje SE 17? Z góry dziękuje za odpowiedź :)
Legacy tez warto znac :P
Najważniejsza rzecz jaka weszła w Javie 8 to Streamy (czyli że już nie używamy for
a) i to mocno zmieniło świat javowy. Reszta to raczej pierdoły. No może jeszcze Optional jest koncepcyjnie trudny (czyli że nie używamy null
a).
Niby są jeszcze rekordy i eksperymentalny pattern matching w Javie 17 LTS ale nie miałem okazji spotkać w produkcyjnym kodzie
Książka może być. Podstaw Javy można nauczyć się na wersji 7. Proste programy napisane w Javie 7 często zadziałają na nowszych wersjach.
Java 17 to nie tylko syntatic sugar jak lambdy etc. To też zmiany w samej bibliotece, np. CompletableFuture , wspomnienie streamy i Optionale. Rzadko się już używa Javy 7, ja bym proponował nowszą.
No ja na miejscu autora jednak bym się z niej nie uczył.
Nie chodzi o to że zostanie wprowadzony w błąd, tylko lepiej użyć się już aktualnej wiedzy.
To tak jakby ktoś teraz chciał się czuć konfiguracji Springa po xml. Niby można ale po co?
Książka bardzo dobra do nauki. Tylko już stara, parę rzeczy się jednak zmieniło od tego czasu, Gdybym miał zainwestować kilkaset godzin w naukę języka, to kupił bym coś bardziej współczesnego. I tak te nowości trzeba będzie przyswoić, więc lepiej za jednym zamachem.
Dałeś się zrobić w bambuko, taka książka jest niewiele warta w dzisiejszym świecie. Zrób sobie przysługę i zacznij przerabiać https://docs.oracle.com/javase/tutorial/ i https://docs.oracle.com/en/java/javase/17/language/java-language-changes.html które są za darmochę. Potem jak się będziesz czuł niedowartościowany to możesz jeszcze zrobić jakiś certy w stylu OCP.
@0xmarcin: Autor już ma tę książkę i może jej użyć do nauki podstaw, np. zmiennych, metod, pętli itp. To w Javie się nie zmieniło od jej początków. Z resztą sam podałeś link do artykułu, w którym jest informacja, że opisana tam jest ósma wersja Javy. Nie ma powodu straszyć człowieka, że zrobił coś źle.
Biorąc pod uwagę średnią wieku na forum to mało kto z nas uczył się na tak nowoczesnej wersji jak 7, a jakoś daliśmy radę nauczyć się nowych ficzerów.
Żeby było śmieszniej to w tym wątku masz wymienione większość zagadnień, o których warto doczytać jak już ogarniesz podstawy.
No i warto zerkać do javadoców, bo przy obecnym cyklu wydawniczym nieraz się okazuje, że parę wersji temu akurat pojawiła się metoda, która robi to, co chcieliśmy zaklepać samemu.
Jeżeli OP jest początkującym i uczy się if/while/do..while oraz dziedziczenia i czym jest interface to OK. To są podstawy które są niczym wewnętrzne warstwy cebuli, tam się niewiele zmienia (choć np. taki var
doszedł). Ale OP musi mieć świadomość że Java 8 wniosła bardzo dużo nowości, oraz tego że wersję Java 9 - 17 może nie tak spektakularne jak ósemka to również wniosły sporo nowego np. rekordy w 17.
Natomiast to co mnie niepokoi to to w jaki sposób OP dostał książkę do Javy 7 w 2021. Logiczne jest że teraz powinno być na rynku dużo książek o Javie 8. Dlatego uważam że ktoś (lub OP sam) zrobił siebie w bambuko.
oraz tego że wersję Java 9 - 17 może nie tak spektakularne jak ósemka to również wniosły sporo nowego np. rekordy w 17.
Nie zgadzam się, Oczywiście wiele zmian było w malych porcjach, ale takie rzeczy jak recordy, pattern matching/switch, inferencja typów to duzo. Nawet zmiany w samej bibliotece. Chociażby Optional w Javie 8 był o tyle rakowy że jak chciałeś obłużyć przypadek braku wartości (tzn, wywołać jakąś procedure voidową) to musiałes robić coś w stylu if (!Optional.isPresent()).
Teraz masz
Optional.ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction);
-> to weszło w Javie 9. Czyli dużo małych zmian które w kumulacji zrobiło dużo ;)
Jeżeli ktoś twierdzi, że zmian od wersji 7 było mało, to powinien za karę podbić duży projekt z 8'ki do 9'ki. Patrząc od 7'ki największe zmiany to cytując:
8:
- lambdy
- streams
9: - moduły
- rozbudowa streams
- literały dla kolekcji
10: - var
- rozbudowa file API
13: - zwracanie wartości ze switch
- wieloliniowe stringi
- rekordy (jej...)
- pattern matching (wreszcie po sprawdzeniu typu wiadomo co to za typ....)
- garbage collector
15: - Sealed classes
17: - switch po typie (co za rak)
To, że standardowe korpo-projekty będą się smażyć w piekiełku Java 8 (to faktycznie jest nowy Cobol), bo zależności w nich są tak pokręcone, że nie da się łatwo przejść wyżej to też prawda, ale też nie wszędzie.
switch po typie (co za rak)
Zależy od punktu siedzenia. Z punktu widzenia funkcyjnego modelowania domeny - są rekordy i sealed classy - czyli mamy mniej więcej algebraic data types
. Standardowo sealed class obsługuje się przez switch właśnie - odwrotnie niż w modelowaniu obiektowym. I wtedy to nie byłby rak.... ale
Ale, że w javie nie ma jeszcze "exhaustivity check" (czyli sprawdzenia czy obsłużone są wszystkie typy z hierarchii) to troszkę bez sensu, ani specjalnie wygodne ani bezpieczne. Na razie
Chyba kłamię - , bo w sumie switch expression w zasadzie wymaga exhaustivity check (nie wiem jak to inaczej kompilować). Mógłby jakiś jawoviec sprawdzić? @scibi_92 ?
EDIT:
No to na podstawie update stwierdzam, że mamy funkcyjne modelowanie domeny w javie, które nawet powinno działać (czyli będziemy dostawać błędy kompilacji, jeśli nie obsłużymy jakiejś konstelacji). (dzięki @mdolata )
Co ciekawe nikomu nie przeszkadza że catch
w Javie jest de facto switchem po typie
:D
Na rynku sa jeszcze projekty w Javie 6 wiec nie stresuj sie i spokojnie ucz z tej pierwszej czytanki.
I tak do pierwszej pracy bedziesz musial przeczytać z 10-20 książek, chyba ze celujesz w juniora.
Na rynku sa jeszcze projekty w Javie 6 wiec nie stresuj sie i spokojnie ucz z tej pierwszej czytanki.
@Kacper Lemierz tak są, tylko to pewnie 5% rynku. Koledzy Ci mówią że podstawy bedą takie same, tylko to bedą podstawy podstaw albo podstawy podstaw podstaw. Nie wyobrażam sobie książki z podstawami do Javy bez wyrażeń Lambda. Podsumowując, taka ksiażka może starczyć na jakieś pierwsze kilka dni i tyle.
@scibi_92: @vpiotr: @KamilAdam: @jarekr000000:
Okej, dzieki wszystkim z odpowiedz i dyskusje, kolejną książke już zamowilem, a z tej po prostu naucze sie podstaw podstaw, ponieważ jestem kompletnym amatorem. Dzieki wielkie za pomoc :D
Móc można, ale trochę obawiam się o brak informacji o nowoczesnych konstrukcjach, typu Stream API, Lambdy, Optionale itd. Można się tego nauczyć z internetu, chociaż pewnie jak zabierasz się za opasłe tomisko jakim są "Java. Podstawy", to fajnie by było jednak zainwestować w nowsze wydanie i chłonąć wiedzę spójną z obecnymi standardami :)