Kategorie
Junior Developer

Czy Java to dobry język na początek?

Java tu, Java tam. No i jak to jest. Czy Java to dobry język programowania na początek? Czy warto w niego inwestować swój czas? A jeśli warto, to czy jest to rozwiązanie dla każdego?

Lecimy!

Junior Java Developer Handbook

Kilka założeń

Ok, zanim przejdziemy dalej załóżmy sobie kilka rzeczy:

  • nie programujesz,
  • chcesz się nauczyć pierwszego języka programowania,
  • język ma być stosunkowo ogólnego zastosowania,
  • interesuje Cię raczej nauka programowania, czyli nie wchodzimy teraz w temat frontend vs backend (jeśli chcesz to połączyć to dobry wstęp do tematu jest tutaj 5 powodów, żeby zostać Full Stack Developer).

Tych kilka założeń pozwoli nam na przejście do dalszej części artykułu i utrzymanie pewnego kontekstu odpowiedzi.

Co to jest właściwie Java?

Tak, jak przeczytamy w Java: an Overview Jamesa Goslinga z 1995 roku Java, jako język programowania, wyróżnia się kilkoma cechami:

  • jest prosta,
  • zorientowana obiektowo,
  • działająca w środowiskach rozproszonych,
  • solidna,
  • bezpieczna,
  • neutralna architektonicznie,
  • przenośnia,
  • interpretowana,
  • wysokowydajna,
  • wielowątkowa,
  • całkiem dynamiczna.

Nie wchodząc w szczegóły, tych cech jest kilkanaście. Java generalnie powstała w momencie, kiedy C i C++ już lekko przestawały odpowiadać na dynamikę zmian w ciągle rozwijającym się świecie potrzeb IT.

Co ważne, twórcy w Javie starali się pominąć pewne niedogodności i bardziej skomplikowane koncepcje z wcześniejszych języków (jednym z przykładów jest wielodziedziczenie, o czym możesz przeczytać w artykule Interfejs, czy klasa abstrakcyjna w Java).

Zalety samego języka

Przechodząc do zalet możemy stwierdzić, że lista korzyści z poprzedniej sekcji jest całkiem długa. Ale co z tego wynika, dla osoby dopiero zaczynającej swoją przygodę z programowaniem?

Myślę, że warto skupić się na kilku wybranych elementach, które dają początkującym największe korzyści, żeby sprawnie poznać język i zacząć tworzyć własne programy.

Prostota

Jeśli chodzi o języki programowania to, gdy popatrzymy na ich składnie, fragmenty kodu źródłowego, to zwykle od razu możemy powiedzieć – tak, ten język wygląda dobrze.

I tak właśnie jest z Javą.

Po pierwsze sama język zawiera stosunkowo niewielką liczbę elementów, które trzeba poznać (słowa kluczowe, konstrukcje pętli, tworzenie obiektów, etc.). To ważne. Nie chcesz na pewno zaczynać nauki od języka, w którym do napisania małego programu potrzebujesz zaznajomić się np. z 200 różnymi słowami kluczowymi. I w Javie tego nie będziesz musiał robić.

Składnia, czyli to jak piszemy kod i co jest w nim dopuszczalne, a co nie, jest też w Javie całkiem prosta. Dzięki czemu nasz kod (o ile się nie postaramy) będzie wyglądał dobrze i będzie się go dobrze czytało innym osobom.

Zorientowanie obiektowe

Java jest językiem zorientowanym obiektowo, czyli … Podstawową koncepcją w niej występującą są obiekty.

Ten koncept nie jest trudny. Bardzo łatwo jest wyobrazić sobie np. samochód Ferrari (nasz obiekt). Taki obiekt ma różne cechy (np. maksymalna prędkość) i zachowania (np. może się poruszać).

Jak sam widzisz, jest to koncept bardzo prosty i naturalnie współpracujący z naszym postrzeganiem świata rzeczywistego. Dzięki czemu dobrze napisany kod jest bardzo naturalny i łatwo się go czyta.

Solidność

Jak zaczynamy uczyć się nowego języka obcego to oczywiście chcemy nauczyć się go dobrze. Chcemy się w nim dobrze porozumiewać, czyli stosować poprawne konstrukcje i chcemy być zrozumieni przez innych.

Stosując to do języków programowania, po prostu chcemy, żeby nasz kod był poprawny i działał niezawodnie.

Java jest językiem programowania, który wspiera nas w tych dążeniach.

Ponieważ jest to język o silnym typowaniu, kompilator Javy od razu jest w stanie wychwycić podstawowe błędy, jak np. źle przypisane klasy, niezakończone instrukcje, etc. Tak wczesne wyłapywanie błędów jest bardzo korzystne i wpływa na jakość naszego oprogramowania.

Java jest też językiem, który w momencie jej powstania, bardzo fajnie rozwiązał bolączki programistów dotyczące wycieków pamięci. W Javie upraszczając, gdy stracimy dostęp do obiektu, automatycznie zadziała proces, który pamięć do tego obiektu odzyska (garbage collector). Oczywiście nie ochroni to nas przed wszystkimi sytuacjami, ale w typowych zastosowaniach będzie bardzo pomocne.

Takie i inne mechanizmy wpływają na budowanie kodu o wyższej jakości już od początku Twojej przygody z programowaniem.

A inne zalety?

Ok, zalety Javy jako język programowania to fajna sprawa. Ale, czy obecnie warto się nią zajmować? Co jeszcze przemawia na jej korzyść?

Zalety Javy bardzo szybko wychwyciły korporacje, które rozwijają setki i tysiące aplikacji i systemów w jej ekosystemie. Oznacza to bardzo duży rynek pracy dla praktyków Javy. Moim zdaniem to ważna zaleta języka, bo ucząc się programować, możemy też zyskać świetną pracę.

Warto też dodać, że w ekosystemie Javy mamy dostępnych mnóstwo narzędzi wspomagających w niej pracę. Zaczynając o lidera wśród IDE, czyli Intellij Idea, poprzez narzędzia do budowania takie jak Maven, czy Gradle, jak również przez ogrom narzędzi do wdrażania aplikacji na wszelkie platformy.

Nie bez znaczenia pozostanie również możliwość zdobywania wiedzy. Szereg materiałów w sieci, czy też pozycji książkowych (np. przedstawionych w Junior Java Developer – najlepsze książki), kursów, webinarów i szkoleń sprawia, że nauka Javy jest bardzo przystępna.

Easy to learn, hard to master

To znane powiedzenie ma zastosowanie również w Javie. Tak, jak pisałem wcześniej, Java jest językiem stosunkowo prostym.

Ale nie znaczy to, że nie można w niej robić rzeczy bardziej skomplikowanych. Wykorzystanie różnych narzędzi wspomagających, jak np. frameworki (Spring, Quarkus, Micronaut) daje świetne możliwości do budowy skomplikowanych systemów w różnych dziedzinach wiedzy.

To sprawia, że Java ma wszelakie zastosowania.

Do czego jej używać?

Java od samego początku bardzo szybko odnalazła się w środowisku korporacyjnym. Tam, gdzie musimy napisać logikę biznesową w backend, tam Java może mieć swoje zastosowanie.

Dlatego możemy ją znaleźć w dużych systemach monolitycznych, systemach rozproszonych, na urządzeniach mobilnych, etc.

Bardzo popularne jest również pisanie mikrousług (ang. microservices) właśnie w Javie.

Java to dobry język programowania na początek

Zdecydowanie. Jeśli chcesz zacząć programować i szukasz języka ogólnego zastosowania, to Java będzie dobrym wyborem.

Jej nauka nie jest trudna. A zastosowania są ogromne. Java też może stać się dobrym punktem wyjścia do innych języków w późniejszym okresie.

Aktualnie, wg TIOBE z lipca 2020, Java znajduje się na drugim miejscu popularności wśród języków programowania. Od czasu wybuchu pandemii spadła z dzierżonego przez długi czas miejsca pierwszego (wyprzedził ją język C). Czy należy na to zwracać szczególnie uwagę? Chyba nie do końca. Pandemia wpłynęła na anulowanie wielu projektów biznesowych na całym świecie. Ze względu na popularność języka prawdopodobnie wiele z nich powstałoby w Javie. Język C z kolei jest bardzo popularny na urządzeniach wbudowanych, a ten rynek w czasie pandemii naturalnie zyskuje. W perspektywie czasu możemy oczekiwać powrotu Javy na pierwsze miejsce. Jak szybko, to się jeszcze okaże.

A czy Twoim zdaniem Java to dobry język na początek nauki programowania? Daj znać, zostaw komentarz 😊

BTW A może sama Java Ci nie wystarczy i chcesz budować aplikacje również na froncie? W takiej sytuacji 5 powodów, żeby zostać Full Stack Developer będzie artykułem dla Ciebie.

5 2 votes
Article Rating
Subscribe
Powiadom o
guest
13 komentarzy
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Koziołek
21 dni temu

Nie, Java nie jest dobrym językiem na początek. OOP jest stosunkowo trudną koncepcją, która wyrabia złe nawyki. Sławetne pies i kot dziedziczące po zwierzęciu, czy też co i rusz poruszane problemy z prawidłowym podziałem odpowiedzialności pomiędzy klasy, warstwy, moduły. „Korporacyjność”, też nie może być rozpatrywana jako zaleta w kontekście samej nauki. Jest to zalete jeżeli chcemy znaleźć pracę, choć i tutaj bywa różnie, lub gdy szukamy narzędzia dla własnego biznesu. Prostota i solidność, to też nie są cechy, z których Java słynie. Obecnie istnieje wiele języków, które są znacznie prostsze od Javy np. Kotlin, Python, Elixir, zarówno na poziomie nauki… Czytaj więcej »

Koziołek
20 dni temu

OOP jako taki nie ma silnych podstaw matematycznych, co powoduje, że dużo trudniej jest go weryfikować. Sensowne (czyt. niebędące luźnymi dywagacjami) matematyczne podstawy OOP są dostępne dopiero od niedawna. Przykładowo NOOP A Mathematical Model of OOP, to praca z 2011 roku, opiera się na specyfikacjach i artykułach dotyczących różnych aspektów OOP, które skleja w całość.

Dołóżmy do tego różne Javowe „udziwnienia” OOP w rodzaju prymitywów i to już nie jest przyjazne miejsce.

Koziołek
19 dni temu

Z tymi prymitywami to jest zabawnie. W takim rubym robię:

10.times { puts "hello" }

i mam wynik. Wszytko jest obiektem. W Javie mogę zrobić:

Integer a = new Integer(1);
int b = 3;

Integer c = a +b;

Teraz wjeżdża autoboxing, którego w pierwszych wersjach języka nie było, i trzeba wytłumaczyć, dlaczego tak to działa. Już pomijam „logikę trójwartościową” w Javie, bo w końcu możemy mieć true, false i null 🙂

Przemek
20 dni temu
Reply to  Koziołek

Aż mnie serce zabolało, jak przeczytałem: „Sławetne pies i kot dziedziczące po zwierzęciu”. To nie jest dobry przykład programowania obiektowego :(. Dziedziczenia unikamy… Jest mnóstwo innych zalet OOP… To jest problem przykładów, a nie samego języka. Java jest tak samo dobra jak każdy inny język na start. Każda składania jest prosta. To że nie musisz wpisać „;” na koniec nie jest czymś, co wybija inne języki na zupełnie nowy poziom. OOP jest do pojęcia dla kogoś początkującego, jak dasz mu dobry przykład i sprawdza się idealnie do modelowania. To jest powód, dla którego OOP króluje w świecie IT. Sam zacząłem… Czytaj więcej »

Koziołek
19 dni temu
Reply to  Przemek

Akurat prostota składni to nie tylko średniki na końcu. Java ma jednak dość rozwlekłą składnię, która wymusza dużo pisania. Mam porównanie z językami, które nie czerpały ze składni C i Java na tym tle mocno odstaje. Miałem też okazję kilka lat pisać kod w Cobolu, a naukę zaczynałem od Basica i nie jest tak, że „każda składnia jest prosta”. Jak masz wprawę to i w ASMie będziesz pisał szybko i bez problemów, ale w nauce nie o to chodzi. Jeśli chodzi o dziedziczenie, to jest jeden ze sztandarowych przykładów, gdzie OOP nie jest najlepszy na początek nauki. „Masz tu zabawkę,… Czytaj więcej »

Radosław
Radosław
21 dni temu

Też uważam, że java nie jest dobra na początek. Zaczynałem od niej i się od niej odbiłem. Programowanie obiektowe jest moim zdaniem za trudne dla początkującego. Całe szczęście przerzuciłem się na Pythona, a później na Javascript. Dopiero teraz wróciłem do Javy jak OOP już mnie nie przeraża.

Meham
Meham
20 dni temu

Java jest dobra na start co nie znaczy że na szybki start. Z jednej strony nie jest to tak oczywiste dla „zielonych” pisanie skryptu gdzie coś robi się najpierw, a coś później – ale pozwala spojrzeć na programowanie szerzej a nie jak na zbiór instrukcji, które trzeba ułożyć w odpowiedniej kolejności. Czy to jeżyk idealny na start – pewno nie, uważam że ma wyższy prób wejścia niż kilka innych, ale za to pozwala lepiej i szerze modleować rzeczywistość.

Bartłomiej Chmielewski
Bartłomiej Chmielewski
20 dni temu
Reply to  Meham

No tak rzeczywiście jest, nie jest to najprostszy z możliwych języków programowania, ale jednocześnie daje bardzo duże możliwości. Przy czym jest też po prostu bardzo popularny i łatwo znaleźć odpowiedzi na wszelkie pytania 🙂

Dariusz
18 dni temu

Składnia, czyli to jak piszemy kod i co jest w nim dopuszczalne, a co nie, jest też w Javie całkiem prosta. Dzięki czemu nasz kod (o ile się nie postaramy) będzie wyglądał dobrze i będzie się go dobrze czytało innym osobom.

Ten fragment jest tak samo prawdziwy dla każdego języka.

Dariusz
18 dni temu

Dlatego możemy ją znaleźć w dużych systemach monolitycznych, systemach rozproszonych, na urządzeniach mobilnych, etc.

Urządzenia mobilne, to chyba tylko w kręgach kodzie. Juz dawno nie widziałem/słyszałem o nowych projektach mobilnych w Java. Teraz króluje Kotlin, młodzieży i szybszy brat Javy