Zaraz zacznę swoją pierwszą karierę zawodową jako programista i prawdopodobnie będę pisać dużo kodu Java. Nie wiem zbyt wiele o tym, co konkretnie będę pisać, a poza tym mam dość szerokie zainteresowania, jeśli chodzi o kod.
Z powodów, których nie warto omawiać, mój ostatni staż spowodował, że kodowałem tylko dla Java 1.3 i 1.4 SDK. Ponadto moje wykształcenie uniwersyteckie koncentrowało się głównie na algorytmach, strukturach danych i innych teoriach, a nie na funkcjach językowych i bibliotekach.
Mając powyższe na uwadze, jakie funkcje, klasy itp. W bieżącej wersji Javy (w każdym razie, w jakiej liczbie teraz jesteśmy?) Warto poświęcić mój czas na zapoznanie się i dlaczego? Czego mi brakowało od 1.4.2, co ułatwia Ci życie programisty?
Świetne byłyby również przykłady i historie, w jaki sposób odkryłeś konkretną paczkę lub ją wykorzystałeś.
Odpowiedzi:
Najważniejsze zmiany, które uważam za:
Przeczytaj także, do czego chcesz Java? , aby lepiej zrozumieć każdą z trzech wersji.
źródło
for
pętlę”?Jedną najważniejszą zmianą w codziennym życiu programistycznym jest wprowadzenie generycznych, które najprawdopodobniej zostaną wykorzystane w każdym nowym module, o który poprosimy Cię o napisanie, i jest to myląca nowa składnia.
Generics to mechanizm umożliwiający np
List
zawieranie ciągów zamiast nagich obiektów, gdzie kompilator wymusza, aby element do umieszczenia na liście był ciągiem, i wie, że kiedy wyciągasz element z listy, jest to ciąg .Dzięki temu powstają lepsze programy, ponieważ unika się jawnego przesyłania środowiska uruchomieniowego na typ docelowy (który jest częstym źródłem błędów, jeśli się pomylisz), a IDE może pomóc wykonać całą brudną robotę, ponieważ wie znacznie więcej o kodzie niż stało się tak, gdy była to tylko lista obiektów.
Joshua Bloch napisał dobre wprowadzenie do Generics, które jest dostępne jako przykładowy rozdział na stronie http://java.sun.com/docs/books/effective/
źródło
def whatever
....id
co jestdef
lubvar
.... ale z drugiej strony, bezpieczeństwo 100% pisania statycznego jest niesamowite.Autoboxing to miła funkcja wprowadzona w Javie 5. Podobnie jak w języku C #, kompilator dokonuje teraz automatycznej konwersji między typami pierwotnymi (podstawowymi) i odpowiadającymi im klasami opakowań obiektów (int na Integer itp.) Iz powrotem. To sprawia, że praca z kolekcjami Java jest znacznie mniej uciążliwa.
Wydaje mi się, że pętla For-each była również nowa w Javie 5. Ułatwia to iterację po tablicach (i kolekcjach), ponieważ eliminuje wiele zwykłego bałaganu związanego z konfiguracją i zarządzaniem zmienną indeksu lub iteratorami. Na przykład:
źródło
Wyliczenia , aby zastąpić ostateczną statykę i stałe oraz pomóc usunąć odniesienia do łańcuchów i liczb magicznych. Przykład wzięty od dobrych ludzi ze Słońca / Wyroczni :
i
źródło
java.util.concurrent został wprowadzony w wersji 1.5. Najlepszym źródłem do nauki jest (prawdopodobnie) książka Java Concurrency in Practice . Współbieżność IMHO jest najważniejszą przewagą konkurencyjną Javy w porównaniu do czegokolwiek innego, więc zdecydowanie warto ją dobrze poznać.
źródło
java.util.concurrent
prymityw współbieżności jest jak automatyczne zarządzanie pamięcią do ręcznego zarządzania pamięcią. Korzystanie z tego drugiego jest tylko receptą na poświęcenie więcej czasu na debugowanie i nie oferuje żadnych korzyści.Cóż,
StringBuilder
bardzo mi pomógł, aby przyspieszyć mój program. Jest to odpowiednikStringBuffer
bezpieczeństwa bez wątku.źródło
+
łańcuchów automatycznie używa StringBuilder zamiast StringBuffer dla poziomu źródłowego 1.5 i wyższego.Pomogę, kategoryzując pomocną odpowiedź od @ykombinator. Jego lista to lista elementów, z których będziesz korzystać na co dzień, wykonując „ogólne” prace rozwojowe w Javie.
Mały wpływ i niski poziom trudności:
Wysoki wpływ i średni poziom trudności:
Wysoki wpływ i trudność:
Niski wpływ i wysoki trudny (będzie używany tylko, jeśli nie wykonasz zaawansowanego gwintowania)
Proponuję zatem, abyś przeczytał dokumentację / pomoc na temat mało trudnych i mało trudnych elementów - są łatwe do odebrania. Poświęć trochę czasu na adnotacje i ogólne - adnotacje są bardzo przydatne, a ogólne mogą się komplikować.
Spójrz na nową zawartość współbieżności tylko wtedy, gdy chcesz wykonać wątki.
źródło
Ponieważ nie mogę komentować, ponieważ mam mniej niż 50 lat, zostawię odpowiedź. Zostało już wspomniane, ale powtórzę to jeszcze raz: Adnotacje! Tego rodzaju metadane stały się najważniejszą rzeczą w moich latach doświadczenia w Javie. Jest dobrze używany, podobnie jak niektóre frameworki, dzięki czemu kod jest znacznie bardziej zwięzły i czysty. Na przykład adnotacje mogą:
Oczywiście możesz budować własne adnotacje i wiedzieć, czy metoda, klasa lub pole są adnotowane za pomocą odbicia.
źródło
Uczenie się przez przykład działa dla mnie
Oto szybki przykład idiomatycznej Java 6
Nie przejmuj się Javą 5, jest przestarzała w stosunku do Java6.
Następny krok, adnotacje. Po prostu definiują one aspekty twojego kodu, które pozwalają czytającym adnotacje na wypełnienie dla Ciebie konfiguracji szablonów. Rozważ prostą usługę internetową, która wykorzystuje specyfikację JAX-RS (rozumie RESTful URI). Nie chcesz zawracać sobie głowy robieniem wszystkich paskudnych WSDL i zabawą z Axis2 itp., Chcesz szybki wynik. Racja, zrób to:
Huk. Z odrobiną magii konfiguracyjnej w pliku web.xml jesteś wyłączony. Jeśli budujesz z Maven i masz skonfigurowaną wtyczkę Jetty, twój projekt będzie miał swój własny mały serwer sieciowy od razu po wyjęciu z pudełka (bez zbędnych kłopotów z JBoss lub Tomcat), a powyższy kod będzie odpowiadał na identyfikatory URI Formularz:
Zadanie wykonane.
źródło
Wow, to był podmuch z przeszłości! Nie korzystam z Javy od 4 lat - w tym czasie nic się nie zmieniło!
Istnieje lista funkcji według wersji , ale tutaj jest ważny (oczywiście plagiat) ...
J2SE 5.0 (30 września 2004 r.)
Java SE 6 (11 grudnia 2006 r.)
O to chodzi. Java SE 7.0 wygląda bardziej interesująco, ale nie została jeszcze wydana.
Biorąc pod uwagę, ile nowych funkcji językowych i interfejsów API zostało dodanych do C # w ciągu ostatnich 4 lat, jestem dość zaskoczony. Co się dzieje w Sun / Oracle?
źródło