Open Source

By Weronika Skotnicka

zastosowanie, przyszłość, najlepsze kursy i polecane książki

Java Zobacz polecane: Kursy Książki

Zastosowanie

Java to wysokopoziomowy język programowania ogólnego zastosowania. Jest w pełni obiektowa, z wyjątkiem kilku typów prostych. Java jest łatwo przenośna, gdyż jest interpretowana przez wieloplatformową maszynę wirtualną Javy (Java Virtual Machine). Java reklamuje się sloganem „Napisz raz, uruchom wszędzie!” jednak nie zawsze jest to takie proste - jest to uzależnione od obecności JVM i ograniczone. Java jest przenośna w dziedzinach, które nie są związane z tworzeniem interfejsu użytkownika, interakcją z systemem operacyjnym albo sprzętem.

Java jest najczęściej używana w backendowych systemach aplikacji internetowych. Czyli jest odpowiedzialna za wszystko, co działa “pod spodem”. Można też jej użyć do tworzenia oprogramowania desktopowego (JavaFx) czy gier (Zobacz LibGDX). Ponadto, system operacyjny Android działa w środowisku Javy, co umożliwia także tworzenie aplikacji lub gier na Androida. Obecnie oficjalnym językiem androida jest Kotlin, który działa na tej samej maszynie wirtualnej co Java i jest z nią w pełni kompatybilny.

Java nadaje się do pisania zarówno małych jak i większych projektów. Jest preferowanym językiem w korporacjach i dużych firmach. Często wykorzystywana w systemach bankowych.

Co więcej, Java może być nawet używana w systemach wbudowanych, dzięki Oracle Java Embedded. Typowe przykłady to karty SIM, telefony VOIP, odtwarzacze dysków Blu-ray, zestawy telewizyjne, mierniki poboru energii elektrycznej, ciepła czy wody, urządzenia do monitorowania stanu zdrowia, przemysłowe systemy sterujące i niezliczona ilość innych urządzeń.

Javie zarzucano, że jest dużo wolniejsza niż języki natywnie kompilowane, jak np. C++. Jednak odnosi się to do starszych wersji. Obecnie wydajność Javy została poprawiona tak, że może konkurować z językami, które wcześniej były uważane za dużo szybsze. Głównie dzięki kompilatorowi JIT (Just in time), który potrafi optymalizować pod kątem szybkości te części kodu, które są najczęściej używane oraz poprawionym mechanizmom, takim jak odśmiecanie pamięci (ang. garbage collecting).

W Javie został napisany m.in popularny Minecraft, a z innych aplikacji można wymienić jeszcze:

Gmail

OpenOffice

Eclipse

NetBeans

Do najbardziej znanych stron, które mają “pod spodem” Jave, należą

Top 10 projektów na Github wykorzystujących Java

Github to system kontroli wersji. Możesz znaleźć tam projekty open source w każdej technologii. Zobacz jakiego typu projekty wykorzystują język Java oraz jak wygląda Java od strony kodu. Zwróć uwagę na pliki z rozszerzeniem .java.

Poziom skomplikowania

Java została zaprojektowana tak, aby była przyjazna dla początkujących, tym samym łatwiejsza niż C++. Składnia Javy jest podobna do składni języka C++, ale ma mniej niskopoziomowych funkcji. Java posiada także wiele wbudowanych bibliotek z gotowymi rozwiązaniami, podczas gdy w niektórych językach musimy je znaleźć, wybrać i dołączyć na własną rękę. Jest to pewne ułatwienie na początku nauki, bo Java robi to za nas. Jednak później nie ma to większego znaczenia. W Javie jest ich po prostu więcej domyślnie. Jednak nie wszystkie są idealne, gdyż ze względu na kompatybilność wsteczną niektóre rozwiązania są przestarzałe.

Java jest językiem statycznie typowanym, co oznacza, że składnia i zgodność typów zostanie sprawdzona w celu znalezienia błędów zanim zostanie wykonany program, dzięki temu łatwiej je namierzyć. Javę cechuję także silne typowanie, to znaczy, że wyrażenia mają ustalony typ danych, który nie może zostać zmieniony w czasie działania programu. Zapobiega to powstawaniu dziwnych i niespodziewanych błędów, więc kod jest łatwiejszy w utrzymaniu.

Java, jak większość wysokopoziomowych języków programowania, zajmuję się za Ciebie sprzętowymi detalami takimi jak np. zarządzanie pamięcią (Garbage Collection), więc nie musisz się na tym skupiać.

Często można spotkać opinię, że Java jest rozwlekła, to znaczy, że trzeba napisać dużo więcej kodu niż w przypadku innych języków (szczególnie skryptowych), aby dostać podobną aplikacje. Często pokazywane na przykładzie wyświetlenia napisu “Hello World” (W Javie, żeby dało się uruchomić taką instrukcję musi być do tego klasa, metoda main oraz World”), podczas gdy np. w Pythonie wystarczy print(“Hello World”)). Jednak takie porównanie nie ma większego sensu i nie można tego traktować jako wadę, ponieważ przez swoją “rozwlekłość”” jest bardziej jednoznaczna i łatwiejsza w debugowaniu.

Poza tym, od Javy 9 do takiego szybkiego prototypowania i robienia małych kawałków kodów (np. wykonujących jakieś obliczenia do zadania czy po prostu testowanie nowych funkcji) powstało narzędzie Jshell.

Języki skryptowe i szybkie rozwiązania są dobre do prototypowania. Gdy tworzony jest duży projekt i ważne jest jego późniejsze utrzymywanie, “rozwlekłość” języka jest na plus.

Statystyki

Dane aktualne na dzień: 31.03.2022

Według TIOBE index, język Java jest na 3 pozycji pod względem popularności. W ubiegłym roku był na pozycji 2.

Z kolei według rankingu Spectrum jest na 2 pozycji, tak samo jak w ubiegłym roku roku.

Na Stack Overflow jest 3 najczęściej tagowanym językiem z 1,836,510 zapytaniami.

Na Github zajmuje 3 pozycję z liczbą 1,166,863 projektów, z których 2,936 ma więcej niż 1000 gwiazdek.

Jeśli chodzi o organizowane spotkania to według jest to 3 co do wielkości społeczność z liczbą 1,747 grup, w skład których wchodzi 1,615,033 członków na całym świecie. W Polsce mamy odpowiednio 86 grup, w skład których wchodzi 89,009 członków.

Przyszłość języka

Programiści Javy mają duże zapotrzebowanie na rynku ze względu na jej popularność. Jest jednym z najbardziej opłacalnych oraz najbardziej pożądanych języków. Java cały czas jest rozwijana i ulepszana, aby utrzymać się na rynku. Jej ostatnia wersja Java SE 17 została wydana 14 września 2021. Pokazuje to, że Java nadal prężnie się rozwija, mimo, że powstała w 1995 roku. Często krytykowano ten język i wiele języków próbowało zastąpić Jave, jednak wyszła z tego zwycięsko. W kolejnych latach Java raczej nigdzie się nie wybiera i będzie kontynuować swoją dominacje pod względem popularności.

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 (najpopularniejszy serwis dla programistów), czy ilość linii kodu w projektach z otwartym kodem źródłowym np. w serwisie

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.

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.

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:

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ę.

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.

Open Source

Open Source jest ruchem na rzecz otwartego oprogramowania, którego celem jest dążenie do tego, aby istniał swobodny i wolny dostęp do oprogramowania przez wszystkich użytkowników. Jest to także odłam Wolnego Oprogramowania.

Ruch ten założony został przez grupę informatyków zainteresowanych wolnym oprogramowaniem, którzy postanowili wprowadzić nowy termin marketingowy na wolne oprogramowanie, pragnąc przedstawić go jako model przyjazny firmom i mniej zaangażowany ideologicznie w procesie konkurencji z oprogramowaniem własnościowym. Doprowadziło to do utworzenia Open Source. Przyjęli oni Definicję Oprogramowania Open Source opierając się na Wytycznych dotyczących Wolnego Oprogramowania, będących zasadami, według których kwalifikuje się, czy określone programy mogą być uznane za Wolne Oprogramowanie.

Jednak definicja Open Source jest mniej rygorystyczna, dopuszczając przez to niektóre licencje nieakceptowane prze Wolne Oprogramowanie. Założona została również organizacja pomocnicza o nazwie Open Source Initiative (OSI).

Open Source jest oprogramowaniem, którego licencja pozwala na legalne i nieodpłatne kopiowane, zarówno kodu wynikowego jak i źródłowego oraz na dowolne modyfikacje kodu źródłowego.

Główne cechy

Aby dany program został zakwalifikowany jako Open Source musi spełnić następujące kryteria:

wolna redystrybucja

otwarty kod źródłowy

prace pochodne

integralność kodów źródłowych autora

nie dyskryminowanie osób lub grup

nie dyskryminowanie pól zastosowań

rozpowszechnianie licencji

licencja nie musi być szczególna dla produktu

licencja nie może wpływać na inne oprogramowanie

Cechy

Podstawową cechą Open Source jest możliwość swobodnego dostępu do kodów źródłowych oprogramowania przez Internet, dzięki czemu mogą być one zmieniane, udoskonalane i rozpowszechniane, co pociąga za sobą szybki rozwój programów. W ten sposób powstaje niezawodne oprogramowanie, które jest często o wiele efektywniejsze niż oprogramowanie zamknięte, bowiem nad tym drugim pracuje niewielka liczba informatyków, nie będących w stanie wyłapać wszystkich błędów oraz nie ingerujących w kod źródłowy po zakończeniu pracy, przez co nie jest możliwa bieżąca modernizacja.

Open Source jest bardzo atrakcyjny dla biznesu, a więc dla funkcjonowania przedsiębiorstw i ich zarządzania. Jest przede wszystkim niezawodny, bowiem jako udostępniony powszechnie może być nieustannie poprawiany a błędy szybko eliminowane. Jego cechą jest także elastyczność. Kolejną korzyścią jest szybkość rozwoju tego oprogramowania, co pozwala na jego adekwatność z rzeczywistością społeczno-gospodarczą. Dzięki Open Source firma może obniżyć koszty ogólne nie musząc kupować drogiego, komercyjnego software'u. Jest to również możliwość załagodzenia konfliktu z prawem i producentami oprogramowania oraz szansa wglądu w technologie programistyczne i rozwijania dzięki temu programów na własne potrzeby.

Przykładem Open Source są między innymi następujące programy: Linux, OpenOffice, PostgreSQL, Apache, ZOPE, sendmail i wiele innych.

Różnice między darmowym oprogramowaniem a otwartym

W potocznym języku oba te pojęcia występują zamiennie, jednakże różnią się między sobą zasadniczo. Głównym problemem jest tutaj słowo "wolne" , które jest różnie interpretowane. Oprogramowanie darmowe jak sama nazwa wskazuje oznacza, że jest ono wolne od opłat, jednakże nie zawsze musi być wolne od restrykcji licencyjnych. Wśród programistów open source wolne oprogramowanie oznacza to, że jego zastosowanie nie jest w żaden sposób ograniczane przez licencję, a także cały kod danego oprogramowania jest powszechnie dostępny i udostępniany bez konieczności płacenia. Jest to kompletne przeciwieństwo oprogramowania darmowego zwanego także freeware. Jest ono co prawda dostarczane bezpłatnie, jednakże posiada cały szereg obostrzeń, takich jak na przykład niemożność korzystania z niego w przypadku zastosowań komercyjnych.

Warto zwrócić tu uwagę, że ze względu na definicję open source opracowaną przez organizację Open Source Initiative jakiekolwiek ograniczenie w zastosowaniu licencji lub dla użytkownika uniemożliwia zaklasyfikowanie oprogramowania w kategorii open source. Dlatego też w tej kategorii nie można zaklasyfikować wielu programów, które są dostępne za darmo dla dla pewnej grupy użytkowników takich jak np. tylko dla organów ściagania lub tylko do zastosowań niekomercyjnych.

Typy licencji open source

Organizacja Open Source Initiative wyodrębniła 58 różnych rodzajów licencji open source. W praktyce najczęściej wykorzystywane są dwa z nich czyli GPL i BSD.

Licencja GPL czyli GNU Public License wymaga, aby wszelkie modyfikacje, które zostały wprowadzone do kodu oprogramowania oprócz postaci skompilowanej były udostępniane także w postaci źródłowej.

Licencja BSD czyli Berkeley Software Distribution License nie wymaga tych rzeczy co licencja GPL, jednakże potrzebuje ona za to potwierdzenia, że oprogramowanie, które jest rozprowadzane mieści kod z licencji BSD.

W codziennym użytkowaniu oznacza to po prostu, że autor oprogramowania komercyjnego na licencji GPL musi udostępnić użytkownikowi pełen kod programu. W przypadku licencji BSD autor jest zwolniony z tego wymogu.

Jak można prosto zauważyć licencja GPL jest bardzo korzystna dla użytkownika, który dzięki udostępnionemu kodu może wprowadzić w nim niezbędne dla siebie poprawki.

Bibliografia

Autor: Laura Goncerz, Kinga Mazur, Damian Mystek