To naprawdę świetne pytanie! Nigdy nie myślałem o ludziach uczących się języka Java, tylko dlatego, że łatwiej im się nauczyć Scala ...
Oprócz wszystkich podstaw, takich jak pętle for
, nauka języka Java Generics może być naprawdę pomocna. Odpowiednik Scala jest znacznie silniejszy (i trudniejszy do zrozumienia) niż Java Generics. Możesz spróbować dowiedzieć się, gdzie są granice Java Generics, a następnie w jakich przypadkach konstruktory typu Scala mogą być użyte do pokonania tych ograniczeń. Na bardziej podstawowym poziomie ważne jest, aby wiedzieć, dlaczego generics są niezbędne i jak Java jest językiem mocno napisanym.
Java pozwala mieć wiele konstruktorów dla jednej klasy. Ta wiedza nie przyda się, gdy uczysz się Scala, ponieważ Scala ma inny sposób, który pozwala ci zaoferować kilka metod tworzenia instancji klasy. Tak więc raczej nie przyjrzymy się dokładnie tej koncepcji Java.
Oto niektóre koncepcje, które bardzo różnią się między Javą i Scala. Tak więc, jeśli nauczysz się koncepcji Java, a później będziesz chciał nauczyć się odpowiednika w Scali, powinieneś wiedzieć, że odpowiednik Scala różni się tak bardzo od wersji Java, że typowy programista Java będzie miał trudności z dostosowaniem się do Scala myślenia. Mimo to zwykle pomaga przyzwyczaić się do metody Java, ponieważ zazwyczaj jest prostsze i łatwiejsze do nauczenia się. Osobiście wolę myśleć o Javie jako o kursie wprowadzającym, a Scala to wersja pro.
- Java zbiór zmienny pojęcie vs. Scala zmienny/niezmiennej różnicowania
static
metody (Java) vs. Singleton obiekty (Scala)
for
pętle
- Java
return
oświadczenie vs.Scala styl funkcjonalny ("każde wyrażenie zwraca wartość")
- użycie Javy z
null
dla "bez wartości" vs. Scala bardziej wyraźnej Option
typu
- import
- Java
switch
vs. Scala match
A oto lista rzeczy, które prawdopodobnie będziesz używać ze standardowej biblioteki Java, nawet jeśli będziesz rozwijać w Scali:
- IO
- GUI (Scala ma otoki dla Swing, ale hej)
- URL, URI, pliki
- data
- czasomierze
I wreszcie, niektóre funkcje Scala, że nie ma bezpośredniego odpowiednika w Java lub Java standardowa biblioteka:
- operatora przeciążenia
- implicits i impl Konwersje ICIT
- wiele list argumentów/currying
- anonimowych funkcji/funkcji jako wartości
- aktorów
- strumieni
- Scala wzorzec dopasowania (który kołysze)
- cechy
- rodzaj wnioskowania
for
zrozumienie
- niesamowite operacje zbierania lik e
fold
lub map
Oczywiście wszystkie listy są niekompletne. To tylko mój pogląd na to, co ważne. Mam nadzieję, że to pomoże.
A przy okazji: Powinieneś zdecydowanie wiedzieć o ścieżce zajęć i innych podstawach JVM.
Czy możesz wspomnieć o niektórych podstawach JVM, do których się odwołujesz? To może być bardziej przydatne niż wiedza o Java Generics, ponieważ wpłynie to na codzienne życie ze Scala – pmn
Proszę nie brać daty ze standardowej biblioteki Java. – Debilski
@icey: To byłaby podstawowa wiedza na temat tego, czym jest bajt kodu Java (nie szczegóły, tylko jego idea i to, co znajduje się w plikach .class), usuwanie śmieci, polecenie wiersza poleceń 'java' i jego parametry, ścieżka klasy, JAR jako format wdrożenia i może - może nawet - nawet wątki i synchronizacja. Ale: generics wpłynie na twoje codzienne życie dzięki Javie i Scali. Przynajmniej musisz wiedzieć, jak je wypełnić, a później także, jak tworzyć ogólne klasy. – Madoc