W czym tworzyæ aplikacje na Android?

@franekk

Kotlin to jêzyk z ekosystemu Javy. Zawodowi programi¶ci powa¿aj± go wy¿szy stopieñ abstrakcji ni¿ Java. Czyli jakby wy¿szego poziomu (na tym szczeblu to do¶æ umowne s³owa)

W Javie operacje np na kontenerach pisze siê w wiêkszej ilosci linii, w Kotlinie z wy¿szych stopniem abstrakcji. Ten wy¿szy stopieñ abstrakcji jest fajny, jak kto¶ przygarn±³ rzetelny poziom teorii i praktyki OOP np na studiach czy DOBRYM kursie. Dla praktyka - samouka bym wskaza³ Javê, nieco bardziej rozwlek³a, ale "kawê na ³awê".

Milczysz, na ile masz podk³ad ogólny.

Zapewniam ciê, ¿e dopiero API Androida, resoursy, intenty, eventy (zdarzenia), linkowanie po stringach i multum innych zagadnieñ daje w ty³ek. Nie jest podobne do ¿adnego innego ¶rodowiska pod tym wzglêdem.

Na tym etapie trzeba do Javy (Kotlina) nie mieæ ¿adnych luk ani w±tpliwo¶ci, inaczej nie zrozumiesz, co znacz± komunikaty o b³êdach albo z³e dzia³anie, jêzyk czy android. Wiêc znajomo¶æ jêzyka na poziomie Hello World, a nawet prostych programów konsolowych nie wystarczy.

Do Javy jest ci±gle wiêcej gotowców, przyk³adów. Choæ Kotlin jest od d³u¿szego czasu jednym z oficjalnych jêzyków Androida. Oba w Adroid Studio.

@tvwidget

Trochê pojecha³e¶ z zale¿no¶ci± od wersji .

Nie ma wielu powodów, aby aplikacja pocz±tkujacego zale¿a³± od wersji (mo¿e najwy¿ej odcinamy sie od archaicznych, ale to szczegó³)

A nawet kompatybilno¶æ z wymiarami jest ³atwa do uzyskania, wystarczy tylko nie jechaæ mocno po rozmiarach pixelowych, a w jak najwiêkszym stopniu zdaæ siê na automatyczne rozmieszczenie.

"Przypadkowo" pracuj± gdzieniegdzie moje komercyjne apki, radykalna zmiana rozmiarów docelowego urz±dzenia wymaga³a jednej zmiany na jednym ekranie z kilkunastu (zamykaj±c± siê w jednym wierszu XML) - z tym ¿e to ma³o atrakcyjna wizualnie *) apka biznesowa, ¿adne tak pitolenie siê z pixelami, pieszczonymi bitmapami itd.

*) choæ wcale nie jako¶ brzydka. Po prostu typowy wygl±d androidowy, bez odjazdów graficznych.

Przygotowanie środowiska programisty

To jest jeden z artykułów w ramach darmowego kursu programowania w Javie. Proszę zapoznaj się z pozostałymi częściami, mogą one być pomocne w zrozumieniu materiału z tego artykułu.

W poprzednim artykule pobieżnie opisałem czym właściwie jest programowanie. Do rozpoczęcia nauki niezbędne będzie zainstalowanie paru dodatkowych narzędzi niezbędnych dla programisty. Zanim do tego przejdziemy postaram się wytłumaczyć czym właściwie jest wersjonowanie oprogramowania.

Wersjonowanie oprogramowania

Czy widziałeś czasami dziwne numerki dołączone do nazwy programu, którego aktualnie używasz? Np. 1.0.7, 0.7, 1.2-rc1, 3.14? To nic innego jak wersja oprogramowania, którego używasz.

Nowsze wersje oprogramowania przeważnie zawierają zestaw nowych funkcjonalności niedostępnych w poprzednich wersjach. Poprawiają błędy znalezione przez użytkowników. Rozwiązują problemy związane z bezpieczeństwem.

Jeśli program jest w stanie współpracować z innym programem mówimy wówczas, że jest on kompatybilny (ang. compatible). Czasami zdarza się, że nowsza wersja nie jest kompatybilna wstecz ze starą wersja oprogramowania. Oznacza to, że programy używające innego programu w wersji 1 nie będą mogły używać go w wersji 2.

Poniżej przedstawię Ci przykładowy opis jednego z możliwych standardów wersjonowania programów. Nie jest to standard jedyny, jednak jest dość popularny.

Wersjonowanie oprogramowania X.Y.Z

Standardowo na wersję oprogramowania składają się trzy osobne liczby. Mówiąc o wersji oprogramowania możemy mieć na myśli np. wersję 2.7.0. Wersja ta składa się z 3 członów:

2 – (ang. major) każdy nowy numer oznacza nową wersję, która nie jest kompatybilna wstecz,

7 – (ang. minor) każda nowa wersja oznacza wprowadzenie nowych funkcjonalności kompatybilnych wstecz,

0 – (and. patch) kolejny numer wersji w tym członie symbolizuje zbiór łatek.

Jako łatkę (ang. patch) możemy traktować fragment kodu poprawiający błędy (ang. bugs) znalezione w starszej wersji oprogramowania. Zbiór łatek przeważnie grupowany jest w osobne wersje. Np. wersja 2.7.1 zawierająca kila łatek poprawia błędy znalezione w wersji 2.7.0.

A teraz kilka przykładów:

Wersja 2.0.0 wprowadza zmiany, które nie są kompatybilne z wersją 1.8.0,

Wersja 1.8.0 wprowadza nową funkcjonalność kompatybilną z 1.7.5,

Wersja 1.7.5 wprowadza poprawki funkcjonalności względem wersji 1.7.4.

Pobierz opracowania zadań z rozmów kwalifikacyjnych Przygotowałem rozwiązania kilku zadań algorytmicznych z rozmów kwalifikacyjnych. Rozkładam je na czynniki pierwsze i pokazuję różne sposoby ich rozwiązania. Dołącz do grupy ponad 6147 Samouków, którzy jako pierwsi dowiadują się o nowych treściach na blogu, a prześlę je na Twój e-mail.

Instalacja niezbędnych narzędzi

Naszą naukę zaczniemy od języka Java. Jest to język obiektowy, wymagający wirtualnej maszyny (oba pojęcia wyjaśniłem poprzednio – zachęcam do powtórki w razie wątpliwości). Istnieje wiele implementacji wirtualnej maszyny Javy. Mówiąc o wielu implementacjach mam tu na myśli różne firmy dostarczające JVM (ang. Java Virtual Machine). Najbardziej popularną z nich jest maszyna wirtualna firmy Oracle. Zanim jednak przejdziemy przez proces instalacji chciałbym wyjaśnić Ci jedną ważną kwestię..

Czym różni się JDK od JRE?

W przypadku języka Java często będziesz miał styczność z terminami JRE oraz JDK. Bardzo istotne jest zrozumienie różnicy pomiędzy nimi.

JRE (ang. Java Runtime Environment) – jest to maszyna wirtualna nie zawierająca dodatkowych narzędzi niezbędnych dla programisty. W uproszczeniu można powiedzieć że zawiera wyłącznie implementację wirtualnej maszyny – program java. Do uruchamiania programów napisanych w języku Java wystarczy JRE.

JDK (ang. Java SE Development Kit) – jest to zestaw narzędzi dla programisty. Zestaw ten jest niezbędny do pisania programów w języku Java. Poza programem java zawiera wiele innych. Jednym z dodatkowych programów zawartych w zestawie jest javac – kompilator języka Java.

Instalacja JDK

Proces instalacji jest różny na różnych systemach operacyjnych. Sam używam jednej

z dystrybucji systemu Linux jednak na potrzeby tego wpisu pożyczyłem komputer

z systemem Windows 7. Cały proces zaczynamy od ściągnięcia odpowiedniej wersji maszyny wirtualnej.

Ważne jest żeby była to wersja 1.8 bądź nowsza (poniżej zobaczysz proces instalacji dla wersji 1.8u60).

Krok pierwszy polega na ściągnięciu odpowiedniej wersji JDK ze strony Oracle.

Proszę pamiętaj o tym, żeby ściągnąć wersję odpowiednią dla Twojego systemu. Jeśli masz system 32-bitowy ściągnij plik W przypadku systemu 64-bitowego ściągnij plik Instrukcja opisująca to jak dowiedzieć się jaki masz system dostępna jest na stronie pomocy systemu Windows.

Aby móc ściągnąć jeden z plików musisz przeczytać i zaakceptować warunki licencji.

Pobierz JDK.

Po ściągnięciu pliku uruchom go i postępuj zgodnie z instrukcją instalacji. Poniżej prezentuję kolejne ekrany widoczne podczas instalacji JDK.

Instalacja JDK krok I

Instalacja JDK krok II

Instalacja JDK krok III

Instalacja JDK krok IV

Czego używają programiści do pisania kodu

W najprostszym przypadku wystarczy zwykły edytor tekstu. W systemie operacyjnym Windows tę funkcję spełnia Notatnik. Większość języków programowania nie wymaga innego narzędzia do pisania kodu.

Chociaż takie narzędzie w zupełności wystarczy do efektywnej pracy przydają się bardziej zaawansowane narzędzia. Jednym z nich jest „zintegrowane środowisko programistyczne” – IDE (ang. Integrated Development Environment). IDE poza bardziej zaawansowanym edytorem zawiera zestaw dodatkowych narzędzi przydatnych programiście. Np. „profiler”, „debuger”, zestaw narzędzi do refaktoryzacji itp. Jeśli jesteś zainteresowany, którymkolwiek z tych zagadnień daj znać, na pewno napiszę artykuł na jego temat ;)

Nie ma jednego, słusznego IDE, którego programista powinien używać. Sam swoją przygodę zaczynałem z Eclipse i NetBeans. Jednak po pierwszych doświadczeniach z IntelliJ IDEA i opinii wśród innych programistów wydaję mi się, że powinieneś zacząć właśnie od tego IDE. Postaram się przeprowadzić Cię przez cały proces instalacji.

Instalacja IntelliJ IDEA

Podobnie jak w przypadku instalacji JDK używałem maszyny z systemem Windows 7. Aby ściągnąć IntelliJ IDEA musisz na stronie nacisnąć przycisk z napisem „Download Community”.

Pobierz IntelliJ IDEA.

Instalacja IntelliJ nie zawiera tak wiele ekranów jak instalacja JDK :) Jednak to nie wszystko. Teraz, gdy mamy już działające IDE należy je skonfigurować. Na pierwszym ekranie masz możliwość wyboru zestawu kolorów. Ja wybrałem ciemny, oczywiście możesz to później zmienić.

Instalacja krok I

Tworzenie pierwszego projektu w IntelliJ IDEA

Świeżo po instalacji IntelliJ IDEA niestety nie wie, którego JDK ma użyć (tak, możesz mieć kilka zainstalowanych JDK na jednym komputerze). Dlatego przy tworzeniu pierwszego projektu należy wskazać odpowiednią ścieżkę gdzie poprzednio zainstalowaliśmy JDK.

Instalacja krok II

Tworzenie projektu krok I

Następnie wybieramy ścieżkę gdzie zainstalowaliśmy JDK.

Tworzenie projektu krok II

Po dodaniu JDK możemy je wybrać w menu rozwijanym. Na kolejnym ekranie nie wybieramy żadnego szablonu. Ostatni ekran to wybór nazwy projektu – ja wybrałem test.

Tworzenie projektu krok III

Tworzenie projektu krok IV

Tworzenie projektu krok V

I tak utworzyliśmy swój pierwszy projekt w IntelliJ IDEA! :) Co prawda nie ma w nim jeszcze ani linijki kodu ale tym szczegółem zajmiemy się następnym razem.

Tworzenie projektu krok VI

Podsumowanie

I tak dobrnęliśmy do końca przygotowania podstawowego środowiska dla programisty. Jeśli masz pytania dotyczące któregokolwiek z tematów proszę zadaj je w komentarzach. Proszę także podziel się tym artykułem ze swoimi znajomymi jeśli uznasz go za interesujący.

6 najpopularniejszych języków programowania używanych w bankowości

Gdyby zapytać grupy programistów jaka technologia jest najlepsza przy tworzeniu oprogramowania dla bankowości, z pewnością odpowiedź brzmiałaby “To zależy.” I trudno się z tym nie zgodzić, bo dobór technologii zależy od celu, który ma realizować. Jednak biorąc pod uwagę specyfikę branży bankowej, wyśrubowane standardy bezpieczeństwa i konieczność zgodności z legislacją, wybraliśmy 7 technologii, które najczęściej wykorzystuje się w bankowości.

COBOL

Cobol jest swoistą legendą bankowego IT. Każdy, kto przynajmniej przez moment miał styczność z tym tematem, kojarzy go jako wieloletnią podstawę wszelkich systemów bankowych. Choć dziś programistom zdarza się żartować z tego języka, okazuje się, że niesłusznie. Według danych Reutersa aż 43% dzisiejszych światowych informatycznych systemów bankowych jest stworzona z użyciem COBOL-a, więc jak widać ma się on nadal całkiem nieźle. Nazwa COBOL to akronim od słów Common Business-Oriented Language i właśnie to, że sprawdza się on świetnie przy realizacji celów biznesowych i komercyjnych tłumaczy w dużej mierze jego zastosowanie w bankowości. Ponadto, COBOL odznacza się także prostą i zrozumiałą składnią, co sprawia, że nawet nietechniczna osoba potrafi sporo rozgryźć podczas czytania kodu.

C#

C# to wysokopoziomowy język obiektowy stworzony przez Microsoft. Pomimo upływu lat, wciąż zajmuje wysokie pozycje w rankingach popularności języków programowania. Sprawdza się świetnie w tworzeniu rozbudowanych systemów i dużych projektów, co poniekąd tłumaczy jego miejsce w tym artykule. Tym co wyróżnia C#, jest przede wszystkim fakt, że to technologia ze stajni Microsoftu, co ma przynajmniej dwie spore zalety. Pierwsza to oczywiście kwestia tego, że za tym językiem stoi jeden z technologicznych gigantów, z ogromnym budżetem na rozwój i bardzo dużym wsparciem. Druga to niewątpliwie duża kompatybilność wsteczna (cecha oprogramowania, dzięki której − mimo zmiany funkcjonalności − nowa wersja umożliwia współpracę z całym otoczeniem wcześniejszej wersji i jej wszystkimi komponentami). W kontekście tak pożądanej przewidywalności, Microsoft otwarcie określa kierunek rozwoju swojej technologii, dzięki czemu dosyć jasno i klarownie można przewidzieć z jakimi zmianami przyjdzie się nam zmierzyć na przestrzeni kolejnych kilku lat.

C/C++

Choć C/C++ został stworzony w latach osiemdziesiątych ubiegłego wieku, szeroki zakres jego zastosowania sprawia, że nadal opiera się na nim wiele dużych systemów i aplikacji. C++ wyróżnia to, że sprawdza się przy tworzeniu skomplikowanych, wielopoziomowych systemów, ze względu na specyficzny kompilator. Kompilator C++ silnie przestrzega zgodności typów, dlatego w kodzie napisanym w C++ trudniej jest popełniać błędy, co prowadzi nas do większego bezpieczeństwa aplikacji pisanych w tym języku.

JAVA/ SPRING

Java to niekwestionowana królowa technologii bankowych, której nie trzeba nikomu przedstawiać. Świetnie sprawdza się w projektach, które wymagają bardzo wysokiego poziomu bezpieczeństwa i dużej wydajności. Ponadto odznacza się dużą stabilnością i często wykorzystuje się ją w dużych wdrożeniach. Tym co bardzo wyróżnia Javę, jest jej niezależność od architektury. Powstały kod jest niezależny od systemu operacyjnego i procesora, a wykonuje go tzw. wirtualna maszyna Javy, która (między innymi) tłumaczy kod uniwersalny na kod dostosowany do specyfiki konkretnego systemu operacyjnego i procesora. Taka uniwersalność sprawia, że wszędzie tam gdzie możliwe jest zainstalowanie wirtualnej maszyny, możliwe jest również korzystanie z Javy.

JAVASCRIPT/ ANGULAR.JS

JavaScript, a właściwie framework tego języka, Angular.js jest najczęściej wybieraną technologią przy tworzeniu warstwy front-end aplikacji bankowych. JavaScript pozwala budować aplikacje webowe w technologii SPA – Single Page Application, która bardzo ułatwia intuicyjne korzystanie z aplikacji. Podobnie jak w przypadku pozostałych języków, Javascript jest bardzo stabilnym językiem, wspieranym od wielu lat. Zważywszy na to, że technologie front-endowe zmieniają się niemal z dnia na dzień i można wśród nich zauważyć duże rozwarstwienie, w kontekście stabilności i przewidywalności JavaScript wydaje się najbardziej optymalnym wyborem.

PYTHON

Python to technologia, którą wykorzystuje się najczęściej w obszarze sztucznej inteligencji i uczenia maszynowego, a także w analizie danych i data science. Jest to język bardzo szerokiego zastosowania, a biorąc pod uwagę, że banki coraz mocniej wykorzystują algorytmy AI, nie dziwi więc rosnąca popularność Pythona w tej branży. Python jest przyjazny matematyce, a przez to dobrze “rozumie się” właśnie z algorytmami finansowymi. Co ciekawe, wiele organizacji z obszaru fintech i core banking często wykorzystuje Pythona do analizy danych, a biorąc pod uwagę rosnącą konieczność współpracy technologicznej pomiędzy branżą bankową a pozostałymi instytucjami quasi finansowymi, można się spodziewać, że jego popularność w tym obszarze jeszcze wzrośnie.

Podsumowanie

To co jest bardzo znamienne w przypadku technologii bankowych, to fakt, że do tworzenia oprogramowania i poszczególnych komponentów wybiera się zazwyczaj języki długo wspierane i stosunkowo przewidywalne. Jako że systemy bankowe są skomplikowane i rozbudowane, banki rzadko decydują się na ich przepisywanie z jednej technologii na inną. W związku z tym kluczowa jest stabilność oraz gwarancja tego, że język będzie jak najdłużej wspierany, nierzadko jednak kosztem rozwoju technologicznego branży. Tym, co z pewnością będzie stanowić jedno z wyzwań dla bankowości na najbliższe lata, to znalezienie kompromisu pomiędzy korzystaniem ze sprawdzonych rozwiązań, bezpieczeństwem i stałością, a możliwością rozwoju i wykorzystania najnowszych technologii.

Jarosław Kułak
Jarosław Kułak

Leave a Comment