28.07.20234 min
Nishant Aanjaney Jalan

Nishant Aanjaney JalanAndroid Developer

Dlaczego kochaliśmy Javę 20 lat temu, a dziś niekoniecznie?

Poznaj przyczyny popularności i jej spadku w odnieniu do Javy na przestrzeni lat w branży technologicznej.

Dlaczego kochaliśmy Javę 20 lat temu, a dziś niekoniecznie?

Java istnieje już od prawie 30 lat. Od 1997 roku już na ponad 3 miliardach urządzeń. Biorąc pod uwagę popularność nowszych języków JVM, takich jak Kotlin i Scala, czy Java odeszła już do lamusa?

Wierzę, że kiedyś wiele osób kochało ten język. Ja na pewno byłem jedną z nich. Kiedy pojawiły się właśnie Kotlin i Scala, doceniłem ich zalety i przewagę nad Javą.

Kiedy Java przeżywała swój rozkwit, nie było mnie jeszcze na tym świecie. Mogę jednak wymienić kilka punktów, które tłumaczą, dlaczego Java była naprawdę lubianym językiem.

Dlaczego Java była tak popularna wśród programistów?

  1. Niezależność od platformy — ponieważ Java działa wirtualnej maszynie, JVM, ten sam kod może działać na wielu platformach bez żadnych kłopotów. Z drugiej jednak strony, C miał wiele kompilatorów, które pisały kod asemblera dla różnych ISA. Jeśli program C mógł działać na maszynie A, nie było gwarancji, że będzie działał na maszynie B.
  2. Podobna składnia do C i C++ — Java ma podobną składnię do C i C++, co pozwoliło programistom przejść na Javę bez konieczności uczenia się wszystkiego od nowa.
  3. Koniec ze wskaźnikami — Java wyeliminowała zewnętrzną obsługę wskaźników. Oznaczało to, że nie było już tych irytujących segfaultów. Java używała wskaźników, ale kod był abstrahowany na różne sposoby.
  4. Automatyczny Garbage Collector — w C i C++ programista musiał ręcznie zwalniać pamięć, gdy obiekt nie był już używany. Powodowało to poważne wycieki pamięci. W Javie garbage collector automatycznie zwolni nieużywaną przydzieloną pamięć.
  5. Programowanie obiektowe — Haskell był językiem czysto funkcjonalnym, w dużym stopniu zależnym od umiejętności matematycznych i wymagał praktyki, aby go opanować. Java była językiem czysto obiektowym. Zmiana wygładziła krzywą uczenia się.
  6. Przejrzysta struktura - składnia Javy była bardzo uporządkowana. Wszystko w klasie pomaga w zrozumieniu powiązanych informacji i funkcji. Od pierwszego „Hello, World!” wymagane jest podstawowe zrozumienie składni klas. Ważne zasady, wzorce projektowe i paradygmaty programowania można łatwo wyjaśnić za pomocą Javy.

A co dzieje się teraz?

Bez względu na to, co mówią niektórzy obrońcy, zainteresowanie Javą maleje. Chociaż jest nadal utrzymywana i wciąż jest wielu programistów Javy na całym świecie, miniona świetność tego języka już minęła. Powody?

  1. Null — jako twórca „pustej referencji”, Tony Hoare, w wywiadzie powiedział, że „to błąd wart miliardy dolarów”, ponieważ prowadzi do nieoczekiwanych zachowań i awarii programu. Java, przyjmując użycie wartości null w bibliotece podstawowej, upodabnia ją do obsługi błędów segfault w języku C.
  2. Sztywność — po pewnym czasie programowania w Javie można zauważyć, że wielokrotnie pisze się ten sam kod. Wraz z postępem technologicznym nastąpił ogromny wzrost ilości boilerplate’u w Javie, przez co stała nieporęczna.
  3. Brak wsparcia dla języków funcyjnych — jak wspomniałem wcześniej, Java była czysto obiektowym językiem. Programiści wymagali jednak funkcji związanych zarówno z językami imperatywnymi, jak i deklaratywnymi.
  4. Problemy z dziedziczeniem i klasami abstrakcyjnymi — w Javie mamy cztery specyfikatory dostępu: public, protected, private i package-protected/default/friendly. Brakuje sposobu, aby zezwolić na dostęp do podklas i ograniczyć dostęp do innych klas w pakiecie.

Ulepszenia Javy 8

Twórcy Javy nie byli obojętni na prośby programistów.

  1. Wsparcie funkcjonalne — wprowadzono funkcjonalne interfejsy ze Stream API. Jednak ze względu na wsteczną kompatybilność, implementacja jest nadal dość skomplikowana.
  2. Klasa Optional<T>— Optional<T> jest obejściem problemu nieważności. Niemniej jednak, włączenie Optional<T> nie eliminuje możliwości wystąpienia wartości null, ponieważ jest ona zakorzeniona w podstawowej bibliotece Javy.

Ulepszenia Javy 12

Wprowadzenie wyrażeń switch zredukowało niektóre boilerplate’y w warunkowym przepływie sterowania.

Ulepszenia Javy 16

Java wprowadziła records, które usuwają dużą ilość boilerplate’u podczas pisania POJO (Plain Old Java Objects).

Pojawił się Kotlin i Scala. Podobnie jak Java została stworzona jako ulepszenie C++, Kotlin został stworzony jako ulepszenie Javy.

Zalety Kotlina

  1. Znacznie zredukowany boilerplate.
  2. Zakorzenione null-safety.
  3. Wprowadzono szablony tekstowe (inspirowane Pythonem/PHP).
  4. Wprowadzono sealed classes (inspirowane Rust/Haskell).
  5. Język wieloparadygmatowy (ulepszony OOP).
  6. Przeciążanie operatora (jak w C i Pythonie).
  7. Wprowadzono data classes (records w Javie).
  8. Inne dodatkowe funkcje, takie jak funkcje wbudowane i rozszerzenia oraz korutyny.


Ponieważ nigdy sam nie programowałem w Scali, postanowiłem nie wymieniać dokładnie jej zalet w tym artykule.

Podsumowanie

To, że pojawiło się coś lepszego, nie oznacza, że już nikt nie lubi Javy. Chociaż na pewno ciężko mówić tu już o takiej fascynacji jak kiedyś.

Java była gwiazdą programowania i nie możemy przeoczyć faktu, że istotnie przyczyniła się do powstawania dzisiejszych języków programowania. Java została zbudowana w celu rozwiązania pewnych problemów i, jako efekt uboczny, stworzyła nowe problemy. Widzę to tak, że za 10 lat ludzie zaczną narzekać na dzisiejsze języki i zostanie stworzony nowy, który rozwiąże te problemy.

Jeśli nie lubisz Javy, pamiętaj, że gdyby nie ona, nowoczesne języki nie byłyby tak dobre, jak są obecnie. Zakończę cytatem:

„Istnieją tylko dwa rodzaje języków: te, na które ludzie narzekają i te, których nikt nie używa.” - Bjarne Stroustrup, The C++ Programming Language



Oryginał tekstu w języku angielskim przeczytasz tutaj.

<p>Loading...</p>