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

Java SE7. Czy jest sens się uczyć z książki?
Kacper Lemierz
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:4
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ź :)

.andy
Jak przez przypadek? 🤔🤔🤔
WhiteLightning
  • Rejestracja:prawie 14 lat
  • Ostatnio:około godziny
  • Postów:3181
3

Legacy tez warto znac :P

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


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
edytowany 3x, ostatnio: KamilAdam
PerlMonk
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa 🐪
  • Postów:1719
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.


Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
Zobacz pozostałe 3 komentarze
PerlMonk
@RequiredNickname: Bynajmniej nie popełniam błędu jeśli odpowiadam na pytanie zadane w wątku.
RequiredNickname
Nie zrozumiałeś co miałem na myśli.
PerlMonk
Możesz wyjaśnić?
RequiredNickname
Kupno książki dot. javy 7 było błędem autora. Imho lepiej posypać głowę popiołem, zjeść jednego kebsa mniej (stracona kasa) i kupić nową, bardziej aktualną niż się na siłę męczyć ze starą (zwłaszcza, że nowości do czasów 7 jest sporo więc jakoś i tak autor będzie musiał się o nich dowiedzieć).
PerlMonk
Masz gdzie się wykazać jeśli chodzi o polecanie książek do Javy Ksiazka zaawansowane tematy javy może dzięki tobie ktoś nie popełni błędów.
S9
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Warszawa
  • Postów:1092
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ą.


Zobacz pozostałe 2 komentarze
p_agon
@Burdzi0: Przepros i daj mu lapke.
99xmarcin
Java 17 to rekordy, lepszy switch, nowe GC i lepszy perf. Java 9 to moduły..
Burdzi0
Chodzi mi o to, że sugerujesz, że to weszło w 17, a to nieprawda
99xmarcin
poprawmy więc weszło w wersjach 10-17, poza tym zapomniałem o var z 10 :D
.andy
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 3 lata
  • Postów:1524
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?


Software is like sex: it's better when it's free.
- Linus Torvalds
edytowany 1x, ostatnio: .andy
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:3 dni
  • Postów:3277
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.

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


Holy sh*t, with every month serenityos.org gets better & better...
edytowany 1x, ostatnio: 99xmarcin
PdP
Przy okazji wydania Javy 17, Oracle pochwaliło się: https://dev.java/learn/
PerlMonk
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa 🐪
  • Postów:1719
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.


Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
szatkus
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 3 lata
  • Postów:227
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.


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


Holy sh*t, with every month serenityos.org gets better & better...
edytowany 1x, ostatnio: 99xmarcin
Charles_Ray
Może z biblioteki albo Allegro, jakie to ma znaczenie? ;)
SH
Stój Halina
Dokładnie to samo chciałem powiedzieć (pierwszy akapit: jak jest na etapie for, to wystarczy). Co do drugiego np na Helionie jest kupę staroci sprzed 15 lat, dadzą parę procent obniżki i marzą, że makulatura się sprzeda.
Charles_Ray
Nie bez znaczenia jest również fakt, że jesteśmy obecnie 10 wersji Javy do przodu ;)
S9
  • Rejestracja:ponad 4 lata
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Warszawa
  • Postów:1092
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

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


edytowany 3x, ostatnio: scibi_92
99xmarcin
...lub używałeś Vavra i Lomboka w ósemce
99xmarcin
A co do pattern matching to jest dopiero v1.0 bo nie można robić "dekonstrukcji" klas, to na pewno wejdzie patrząc na typy sealed, tak czy siak prawdziwy pattern matching to jest takie coś case Point3D(x, y, z): ..., wraz z obsługą zagnieżdzonych właściwości case Foo(Bar(name), age)
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:3 dni
  • Postów:3277
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.

Zobacz pozostałe 12 komentarzy
jarekr000000
Nie rozumiem o co chodzi. W kotlinie są zmiany, ale relatywnie (impact) są małe ostatnio.
jarekr000000
@piotrpo: nie, kotlin jest całkiem stabilny. To w javie orają język :-) w tym sensie, że core tego co piszesz się bardzo nie zmienia i nie ma sensu (kotlin), a w javie owszem. Choćby rekordy to już dużo, switch expression to dużo, sealed class to dużo (IMO).
piotrpo
@jarekr000000: OK, pogubiłem się skąd się wziął nagle Kotlin. Wynika to z tego, że język startował z zupełnie innego poziomu. Wciąż w nim trochę brakuje, ale subiektywnie patrząc są o jakieś 5-10 lat do przodu.
jarekr000000
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).
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
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 )


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 7x, ostatnio: jarekr000000
S9
Sprawdzę, wydaje mi się że jest.
MD
Jest i nawet działa
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:26 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
5

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


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
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.

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


vpiotr
Za to 95% API nie korzysta z tej lambdy wiec sie bilansuje.
Kacper Lemierz
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:4
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

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

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)