Java SE7. Czy jest sens się uczyć z książki?

0

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

3

Legacy tez warto znac :P

3

Najważniejsza rzecz jaka weszła w Javie 8 to Streamy (czyli że już nie używamy fora) 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 nulla).
Niby są jeszcze rekordy i eksperymentalny pattern matching w Javie 17 LTS ale nie miałem okazji spotkać w produkcyjnym kodzie

5

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.

4

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ą.

2

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?

1

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.

0

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.

1

@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.

1

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.

3

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.

2

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 ;)

3

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.

5

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 )

5

Co ciekawe nikomu nie przeszkadza że catch w Javie jest de facto switchem po typie :D

3

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.

3

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.

2

@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

0

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

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