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ź :)

- Rejestracja:ponad 3 lata
- Ostatnio:ponad 3 lata
- Postów:4

- Rejestracja:prawie 14 lat
- Ostatnio:około godziny
- Postów:3181
Legacy tez warto znac :P

- Rejestracja:ponad 6 lat
- Ostatnio:26 dni
- Lokalizacja:Silesia/Marki
- Postów:5505
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

- Rejestracja:około 6 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Warszawa 🐪
- Postów:1719
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.




- Rejestracja:ponad 4 lata
- Ostatnio:ponad 2 lata
- Lokalizacja:Warszawa
- Postów:1092
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ą.




- Rejestracja:ponad 16 lat
- Ostatnio:około 3 lata
- Postów:1524
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?

- Rejestracja:ponad 7 lat
- Ostatnio:3 dni
- Postów:3277
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.

- Rejestracja:około 5 lat
- Ostatnio:5 miesięcy
- Postów:2420
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.


- Rejestracja:około 6 lat
- Ostatnio:prawie 3 lata
- Lokalizacja:Warszawa 🐪
- Postów:1719
@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.

- Rejestracja:ponad 21 lat
- Ostatnio:ponad 3 lata
- Postów:227
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.

- Rejestracja:około 5 lat
- Ostatnio:5 miesięcy
- Postów:2420
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.


- Rejestracja:ponad 4 lata
- Ostatnio:ponad 2 lata
- Lokalizacja:Warszawa
- Postów:1092
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 ;)

- Rejestracja:ponad 7 lat
- Ostatnio:3 dni
- Postów:3277
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.





tutaj mamy off-top, czy w Javie jest dużo zmian czy mało. W porównaniu do Java 7 dużo, a do Kotlina to mało - tak bym rzekł.
- czepiłem się, że w sumie to kotlinie zmian jest w sumie nie tak dużo. Ale może autor zdania chciał coś innego powiedzieć.(w sensie kotlin względem javy).

- Rejestracja:ponad 8 lat
- Ostatnio:około 9 godzin
- Lokalizacja:U krasnoludów - pod górą
- Postów:4707
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 )
- Rejestracja:ponad 4 lata
- Ostatnio:ponad 2 lata
- Lokalizacja:Warszawa
- Postów:1092
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.

- Rejestracja:ponad 3 lata
- Ostatnio:ponad 3 lata
- Postów:4
@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

- Rejestracja:prawie 8 lat
- Ostatnio:dzień
- Lokalizacja:PL
- Postów:452
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 :)
.andy