Dlaczego Java?

Wiele osób zastanawia się nad tym jaki język programowania wybrać na początek. Na rynku jest wiele języków do wyboru, wśród nich Java, C, C++, C#, Pascal, Delphi, Python, Ruby i dziesiątki innych. Tak naprawdę początki we wszystkich wyglądają bardzo podobnie, jednak z czasem różnice stają się coraz większe.

Popularne jest też twierdzenie, że jeśli nauczymy się programować w jednym języku, to nauka innego jest już bezproblemowa. Nie jest to do końca prawdą. Podstaw samego języka jesteś w stanie nauczyć się w stosunkowo krótkim czasie, jednak żeby nazwać się programistą danego języka i umieć się w nim w miarę swobodnie poruszać, trzeba na niego poświęcić minimum kilka miesięcy. Zwróć uwagę, że w ofertach pracy nigdy nie pojawia się po prostu stwierdzenie "szukamy programisty", ale raczej zamiast tego znajdziemy "starszy programista java", "senior javascript developer" itp. Pracodawcy płacą za doświadczenie i specjalizację w danej technologii. Można to także porównać do znajomości wielu języków obcych - możemy znać wiele języków nawet w stopniu komunikatywnym, ale raczej w niewielu z nich będziemy w stanie osiągnąć biegłość.

Nie mam na celu przekonać Cię to Javy i opisywać jej jako jedynego słusznego języka, bo jest wiele dziedzin, w których inne języki sprawdzają się lepiej, jednak chcę przedstawić Ci kilka punktów, które moim zdaniem sprawiają, że Java jest obecnie jednym z najlepszych wyborów na początek (i nie tylko).

Popularność

Nie istnieje jeden ranking, który jednoznacznie odpowiada na pytanie jaki jest najpopularniejszy język programowania, ponieważ wszystko zależy od tego jakie weźmiemy pod uwagę kryterium. Większość oprogramowania jakie powstaje nie jest oprogramowaniem z otwartym kodem źródłowym (open source), więc tak naprawdę nie wiemy jakie technologie wykorzystywane są wewnętrznie przez większość firm. Popularność języków programowania szacuje się więc najczęściej na podstawie ilości wzmianek w internecie, ilości pojawiających się pytań w serwisach takich jak stackoverflow.com (najpopularniejszy serwis dla programistów), czy ilość linii kodu w projektach z otwartym kodem źródłowym np. w serwisie github.com.

Istnieje ranking, który uwzględnia m.in. powyższe kryteria i nazywa się Tiobe Index. Od wielu lat Java zajmuje z nim 1 miejsce jako najpopularniejszy język programowania.

java popularność

Z Javą spotkacie się także na większości uczelni technicznych, na których istnieją kierunki informatyczne. Język ten zyskuje także ciągle na popularności dzięki swojej uniwersalności, której poświęcimy jednak osobny punkt.

Ilość ofert pracy

Sporo osób, które rozpoczynają swoją przygodę z programowaniem stawia sobie za cel znalezienie pracy. Jeśli chodzi o polski rynek programistów, to podobnie jak w pierwszym punkcie dotyczącym globalnej popularności, tak również tutaj Java jest jedną z najbardziej cenionych przez pracodawców technologią. W chwili pisania tego artykułu na jednym z najpopularniejszych serwisów z ofertami pracy możemy znaleźć przykładowo 1338 ofert pracy, w których pojawiło się słowo "java", dla porównania znaleziono "tylko" 700 ofert ze słowem "python".

Jeśli obawiasz się o to, że liczba ofert pracy ulegnie załamaniu to raczej niepotrzebnie. Weź pod uwagę, że większość pracy programisty polega na utrzymaniu już istniejących wielkich systemów. Mało którą firmę stać na przepisanie swoich rozwiązań na całkowicie inną technologię.

Rozbudowany ekosystem

Ze względu na swoją ogromną popularność, Java dorobiła się jednego z największych ekosystemów spośród wszystkich języków programowania. Przez ekosystem rozumiem ilość gotowych bibliotek i rozwiązań, które możesz tutaj wykorzystać. Bez problemu znajdziesz tutaj gotowe rozwiązania pozwalające na integrację z usługami Google, czy Facebooka, a do rozwiązania większości typowych problemów istnieją już rozwiązania, które możesz u siebie wykorzystać całkowicie za darmo, ponieważ społeczność skupiona wokół Javy jest bardzo mocno nastawiona na ruch open source, czyli dzielenie się kodem. Największe firmy takie jak Google, Facebook, czy Netflix udostępniają bezpłatnie wiele ze swoich projektów napisanych m.in. w Javie.

java spoleczność

W ekosystem Javy wchodzi także bardzo duża społeczność. W razie problemów bez problemu znajdziesz rozwiązania większości typowych problemów. Wystarczy odpowiednio skonstruować zapytanie w wyszukiwarce Google. Programiści Javy często sami wychodzą z inicjatywą organizowania dodatkowych spotkań, na których możesz poszerzać swoją wiedzę, swego czasu zebraliśmy we wpisie konferencje i spotkania dla programistów Java.

Prosta składnia

Dawniej Java była dosyć często krytykowana za to, że jej składnia jest rozwlekła i wszystko dałoby się zapisać dużo prościej. Przykładowo do wydrukowania linijki tekstu w Javie potrzebna jest taka konstrukcja:

System.out.println("Przykładowy tekst");

podczas gdy w innych językach wystarczy do tego czasami tylko kilka liter i znaków.

Współcześnie nie jest to jednak problem, a raczej zaleta, ponieważ dzięki tej rozbudowanej składni kod jest po prostu czytelny. Dużo lepiej czyta się kod, w którym pojawiają się czytelne nazwy typu "dlugoscBoku", "poleProstokata" zamiast "a, b, x, pp". Jeśli znasz język angielski przynajmniej w podstawowym zakresie, to dużą część kodu będziesz w stanie zrozumieć tylko na podstawie nazw poszczególnych elementów, które się w nim pojawiają.

Uniwersalność

Ostatni punkt to uniwersalność. W Javie napiszesz bez problemu aplikację na swój komputer, a dzięki temu, że aplikacje pisane w tej technologii są uruchamiane na wirtualnej maszynie, to raz napisany program możesz uruchomić bez problemu na windowsie, macos jak i linuksie. Może kojarzysz grę Minecraft - ona także jest napisana w Javie i w tym języku możesz do niej pisać dodatkowe rozszerzenia.

Na tym sprawa się jednak nie kończy. Java jest także domyślnym językiem używanym na systemie android. Jeśli więc chcesz tworzyć aplikacje na najpopularniejszy system mobilny na świecie, to również Java będzie świetnym wyborem.

Ostatnie miejsce gdzie wykorzystywana jest Java to środowiska serwerowe i duże aplikacje biznesowe. Tak naprawdę choć pewnie nie zdajesz sobie z tego sprawy, to właśnie tam Java jest najczęściej używana. Możesz sobie wyobrazić to w ten sposób, że jeśli klikasz na stronie swojego banku przycisk "wyślij przelew", albo "kup teraz" na allegro, to z dużą dozą prawdopodobieństwa przetworzeniem Twojego żądania zajmuje się właśnie aplikacja napisana w Javie. Dzięki temu, że Java jest technologią bardzo wydajną, bezpieczną i świetnie się skaluje, to duże firmy stawiają właśnie na nią jako na główną technologię.

Kurs Java

Podsumowanie

Na tych kilku powyższych punktach zalety Javy się oczywiście nie kończą, ale z punktu widzenia początkującego są to kluczowe elementy na które sam zwracałbym uwagę przy wyborze ścieżki rozwoju. Docelowo prawdopodobnie oprócz samej Javy poznasz co najmniej kilka innych języków i technologii, ale na to wszystko przyjdzie pora. Odradzam jedynie uczenie się technologii rzadko używanych we współczesnym świecie, np. Pascal, który przez długi czas królował w szkołach średnich. Pomimo, że można w nim napisać użyteczne aplikacje, to dużo lepiej uczyć się technologii, które są i będą jeszcze przez długi czas dużo bardziej popularne.

Dyskusja i komentarze

Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.

Poniżej znajdziesz archiwalne wpisy z czasów, gdy strona była jeszcze hobbystycznym blogiem.

Bartekko

na razie bardzo fajnie, zobaczymy co dalej.

Michał

W punkcie 5 nie dopisałeś wyrazu ''świetnie'' do końca, a tak całkiem ładny artykuł ;p

125424

"Szczerze nie potrafię odpowiedzieć na to pytanie jednoznacznie. Moim zdaniem zdecydowanie tak." Czy nie uważasz iż troche to dziwne??

Robert

Artykuł bardzo ciekawy, lecz polecenia w C++ kończymy średnikiem ;) Pozdro

DKnoto

Nie widziałem gorszego języka, można go streścić w kilku typowych ciągach słów: 1) wolno, wolniej, java, 2) rozwlekle, rozwleklej, java, 3) zasobożernie, zasobożerniej, java, ...

Kamil

Czy uczeń który ma spore problemy z matematyką poradzi sobie z programowaniem?

Slawek

Nie ma zależności pomiędzy matematyką, a przyswajaniem wiedzy programistycznej. Problem pojawia się w konkretnych sytuacjach i problemach, gdy po prostu musiałbyś wykorzystać matematykę w swoim programie - grafika, programy liczące coś bardziej zaawansowanego, symulacje itp. gdzie wszystko tak naprawdę zaczyna się na policzeniu czegoś na kartce papieru.

mikol_reach

super ale czy wiedza czwarto klasisty wystarczy do tworzenia moduw i gier

Spiral

Wystarczy, chyba że nie wiesz ile to 2 plus 2.

Saret

Moim zdaniem, to lepiej poczekać np. do gimnazjum czy szóstej klasy, by mieć jakieś większe podstawy do nauki Javy i tworzenia modÓw.

enedil

Najpierw naucz się ortografii

Kamil

czyli wiedza podstawowa i gimnazjalna wystarczy do między innymi tworzeniem gier?

Daniel

Tutaj porównujesz instrukcje Javy: System.out.println(); do cout z C++. Tak jak mówisz, co do zrozumienia kodu może masz i rację ale to nie jest argument. Czy łatwiej Ci zrozumieć: import static java.lang.Math.*; czy proste: #include ? Ja zwolennikiem Javy nie jestem, znam C++, wiem czym się różni od Javy, ale nie mówię, że jest lepsze czy szybsze. Uczę się Javy bo tego wymaga ode mnie rynek pracy i nie płaczę. Komentarze w stylu Java wolna, Java długa możecie schować w swoje poważanie. Czy ktokolwiek z was, takich jak DKnoto, potrafi wytłumaczyć dlaczego Java zła? Nie ponieważ gdyby znał się na programowaniu, a co za tym idzie architekturą systemów komputerowych, na tym jak kod "rozumie" procesor by o tym nie pisał, ani tego kursu by nie czytał. Jeżeli trafiłeś tu bo jesteś pewien, że chcesz się uczyć Javy od podstaw, to świetny wybór. Polecam czytajcie bo na początek warto!

gregorry

argument 1 "język obiektowy" jest w 200% beznadziejny. jest jak pytanie "która godzina była przed chwilą?" czyli zrozumiałe tylko i wyłącznie dla autora i jego kopii. dlaczego każdy kto tłumaczy różnice pomiędzy obiektowym a strukturalnym używa tych samych bezsensownych przykładów? przy porównywaniu różnych należy przedstawić konkretne cechy (wady i zalety) a nie "analogie" które można w milion różnych sposobów rozumieć.

Arkadix

Czepiają się i czepiają... Ja nic nie wiem o javie dlatego tu jestem i nie obchodzą mnie minimalne rozbieżności faktów. Z każdym zdaniem coraz bardziej chcę przejść do konkretnej nauki. Miałem nadzieję że trafię na taką stronę jak ta. Brawo dla autora i dziękuję w imieniu wszystkich zadowolonych internautów :)

Chasil

No to jazda :)

Chicken4PL

Fajny kurs. Mam tylko uwagę, że nie pisze się "4 osobowy", tylko "4-osobowy" (pierwszy punkt).

javax

Czy ma pan może wplanach napisać kiedyś kurs mono lub C#? Czy ten kurs javy bedzie w przyszłości poprawiony i napisany pod Jave 8 która niedługo ma wyjść?

lolo

Tu się głownie znajdują podstawy Javy a te raczej się zbytnio nie zmieniają, więc raczej kursu nie trzeba zmieniać pod Jave 8 gdy wyjdzie. Oczywiście nie przeczę, że kurs pasowało by przejrzeć i miejscami poprawić. A C# jest mocno związany z windowsem. A mono zbyt dobrze też się nie ma.

ekicam2

cout<<"linia tekstu" W C++ wyrzuciłoby soczystego errora bez usingnamespace std; więc jeżeli nie użyliśmy przestrzeni nazw linijka będzie wyglądać następująco: std::cout << "linia tekstu"; też pięknie widać hierarchie klas

Pajączek

<blockquote>Czy łatwiej Ci zrozumieć: import static java.lang.Math.*; czy proste: #include ? Ja zwolennikiem Javy nie jestem, znam C++, wiem czym się różni od Javy, </blockquote> A czy to aby na pewno są tożsame instrukcje (Twoim zdaniem)?? Co coś mi się wydaje że pomyliłeś "#include" z "using namespace" ;)

Aleksanderwiel

Nie rozumiem ludzi, którzy przypisują Javie powolność, aby się zakryć przed tym, że jej czegoś zazdroszczą. Konkretnie mam na myśli mojego kolegę z klasy, który zarzuca Javie, właśnie - powolność - lecz po jego mimice i zachowaniu widać, że nie jest do końca przekonany o atutach C++ i zwala winę na Javę. Chodź tutaj zostało trafnie wyjaśnione, że po internecie "krążą takie plotki i propagandy". On też się naczytał głupot i teraz się tym pyszni, a w tym C++ zna o wiele mniej kodu i funkcji niż ja zdążyłem poznać i przetestować. Nie wiem, jak to trafnie określić :/

bartop

Java faktycznie JEST wolniejsza od c++, który z kolei jest wolniejszy od c. Szanuję ludzkie opinie, ale twierdzenie, że JAVA nie jest wolniejsza od c++, to jak twierdzenie, że pascal jest szybszy od asemblera. A wolniejsza jest około 10 razy, więc to dość dużo (informacja z uczelni), choćby z powodu garbage collectora. Nie da się jednak ukryć, że jej przenośność oraz obsługa pamięci jest jej wielkim atutem, więc plusy raczej równoważą minusy.

Lolo

Oczywiście, że języki interpretowane takie jak java są wolniejsze od języków kompilowanych do kodu natywnego. Oczywistym jest również, że program napisany w pascalu może być szybszy od programu napisanego w asemblerze, tak samo program napisany w Javie może być szybszy od tego napisanego w C/C++. Zwłaszcza gdy zacznie się wykorzystywać rzeczy które nie są wspierane natywnie w C a w Javie już tak np. operacje na kolekcjach. Co do kwestii o ile java jest wolniejsza od C/C++ to nie do końca bym wierzył bezgranicznie profesorkom z uczelni w tej kwestii. Często ich wiedza opiera się tylko na teorii którą wyczytali w jakiś książkach. A jak wiadomo wiele książek z dziedziny IT już w momencie wyjścia z drukarni nie jest najświeższa. A zwłaszcza, że nawet obecnie większość porównań jakie można znaleźć wiele dotyczy javy 1.5 a obecnie mamy już 1.8. No chyba, że przedstawił wam przykład jakiegoś złożonego algorytmu napisanego w C/C++ i Javie i pokazał czas ich wykonywania.

Sławek Ludwiczak

Radzę poczytać o kompilatorach Just in time, optymalizacji kodu w trakcie wykonania, kompilowania przez maszynę wirtualną kodu bezpośrednio do kodu maszynowego, innych implementacjach maszyny wirtualnej niż domyślna, bo to już nie rok 1995, kiedy mówiło się o Javie, że jest wolna. Chętnie dowiem się też na jakiej uczelni "uczą" o tym, że Java jest 10x wolniejsza od C++, bo to bardzo ciekawe stwierdzenie. W wolnej chwili polecam lekturę choćby wikipedii jako punkt wyjścia http://en.wikipedia.org/wiki/Java_performance Pozdrawiam i powodzenia!