Java

Maven Na potrzeby poprzedniego wpisu musiałem zainstalować Maven. Maven jest to narzędzie stworzone do zarządzania projektami Javy. Maven potrafi ściągać szablony projektów Javy – kompilować je oraz nawet tworzyć dokumentacje.

W świecie programowania bardzo stało się popularne tworzenie wszystkiego przy pomocy komend tekstowych. Nic dziwnego, że takie narzędzie jest także w środowisku Javy.

Instalacja tego narzędzia w Windows jest bardzo złożona. Postanowiłem więc napisać o tym wpis.

Trzeba pobrać zawartość Maven ze strony http://maven.apache.org/download.cgi i wypakować w folderze w którym chciałbyś aby Maven się znajdował.

To oczywiście nie wszystko. Jest trochę zabawy z ustawieniem zmiennych środowiskowych w systemie Windows.

VsCode Java Visual Studio Code całkiem niedawno ogłosił możliwość edytowania kod Javy. Jak jednak to wygląda w rzeczywistości. Zawodowo nie programuje w Javie, ale na potrzeby bloga czasami chce sprawdzić proste fragmenty kodu Javy. Przykładowo robiłem to dla cyklu na blogu o tytule “C# i Java: Porównanie składni i szybkie przypomnienie”.

Istnieje dużo artykułów a nawet prelekcji mówiących o tym jak Visual Studio Code z Javą jest cudowne i wspaniałe. Rzeczywistość jest jednak trochę inna. Otóż rozpoczęcie pracy nie było dla mnie takie intuicyjne. W pewnym momencie nawet chciałem się podać ponieważ nie ma artykułu, który krok po kroku pokazał co trzeba zrobić by to wszystko działało.

Według blogów i filmików odpalasz Visual Studio Code przy folderze z projektu Javą i wszystko magicznie działa. Co jednak jeśli chcesz zacząć pracę od zera. Co jeśli świat Javy nie jest tobie znany?

Chciałbym tobie pokazać tą krótką podróż. Jak mi się udało stworzy środowisko pracy w Visual Studio Code do pracy z Javą oraz jak zrobić prosty szablon projektowy.

Zanim zaczniesz musisz do Visual Studio Code pobrać następujące dodatki.

PrzeciążanieCzęść NR.19

Witaj w przedostatnim  wpisie z tego cyklu. Poza wielkim podsumowaniem czego w Javie nie ma, a jest w C# wypadałoby jeszcze coś powiedzieć o przeciążaniu metod w C# i w Javie ponieważ różnice są.

Zacznijmy od C#.

Elementy klasy pochodnej mogą redefiniować metodę klasy bazowej. W klasie pochodnej tworzymy metodę o tej samej nazwie i liście parametrów, co metoda w klasie pochodnej.

Metoda ta będzie miała nowe zachowanie. Inne niż metoda z klasy bazowej.

ConstrainsCzęść NR.18

Generics, Typy generyczne referują się do typów, których definicja metody, klasy i interfejs operują zależnie od tego, co podasz do niego.

Typy generyczne mają wiele zalet jedną z nich jest wykrywanie ich działania już na poziomie pisania kodu oraz to, że pozwalają na uniknięcie konwersji typów.

GenericsCzęść NR.17

Generics, Typy generyczne referują się do definicji metody, klasy i interfejsów, które operują zależnie od tego, co podasz jako parametr generyczny.

Typy generyczne mają wiele zalet jedną z nich jest wykrywanie ich działania już na poziomie pisania kodu. Dzięki nim też możemy uniknąć konwersji typów.

Try-CatchCzęść NR.16

Przechwytywanie wyjątków pozwala programistom rozwiązać problem związany z tym, że w każdej aplikacji może wystąpić nieprzywidziana sytuacja.

Przykładowo jeśli chcesz otworzyć plik używając FileReader z Javy, albo StreamReader z C#, to istnieje kilka sytuacji, które mogą wywołać błąd działania, czyli wyjątek. Przykładowo plik może nie istnieć.

EnumCzęść NR.15

Typ wyliczeniowy jest to typ, który zawiera określoną liczbę nazwanych stałych. Aby utworzyć typ wyliczeniowy wystarczy użyć słowa kluczowego “enum” zamiast “class”.

Wewnątrz nawiasów klamrowych po przecinku definiujemy listę stałych elementów. Zasady poziomu dostępu typu wyliczeniowego są takie same jak zasady dla klasy.

W Javie stałe wartości enum są pisane z dużych liter.

AbstrakcjaCzęść NR.14

Klasa abstrakcyjna dostarcza implementacje innym klasom. Klasa abstrakcyjna jest więc taką podstawką dla pozostałych klas.

Klasa abstrakcyjna może zawierać zestaw kompletnych metod, które będzie posiadać klasa pochodna. Klasa abstrakcyjna może też mieć zestaw abstrakcyjnych metod, które nie są zdefiniowane w swoim działaniu. Podobnie do interfejsów, w takich metodach istnieje tylko sygnatura metod. Nie ma w nich ciała.

C# Java

InterfejsyCzęść NR.13

Interfejs to typ, którego zadaniem jest rozłączenie implementacji działania od definicji parametrów wyjścia.wejścia.

Jest to specyficzny kontrakt, który jest implementowany przez klasy. Kontrakt ten zawiera tylko informacje o co dana metoda ma się zwrócić i co ma ona przyjąć. Definicja działania jest już określona w klasie.

StałeCzęść NR.12

Zmienna w C# określona słowem kluczowym const staje się stałą, której zawartość jest na zawsze zawarta w bibliotece, w trakcie kompilacji. Ta wartość nie może zostać zmieniona w trakcie działania programu.

Próba przypisania jakiekolwiek wartości do stałej będzie skutkować błędem.

Stałe muszą znajdować się w klasie jako pole lub w lokalnym bloku kodu .

Poziom.DCzęść NR.11

Poziomy dostępu deklarują na jakim poziomie dany element klasy bądź sama klasa jest widoczna.

W Javie mamy 4 typy dostępu. Są one następujące: public, protected, private i private na poziomie paczki.

Ten ostatni poziom nie może być jawnie zadeklarowany za pomocą słowa kluczowego.

Warto zaznaczyć, że poziom dostępu protected daje dostęp do wszystkich klas w danej paczce, nawet jeśli one nie dziedziczą po tej klasie.

DziedziczenieCzęść NR.10

Dziedziczenie pozwala klasie na uzyskanie elementów (pól, metody) innej klasy. W przykładzie poniżej klasa kwadrat dziedziczy po klasie prostokąt.

Prostokąt staje się klasą bazową Kwadratu.

W dodatku wszystkie elementy klasy Prostokąt, jeśli są one dostępne stają się elementami klasy Kwadrat. Wyjątkami są konstruktor i w przypadku C# destruktory.

StaticCzęść NR.9Słowo kluczowe “static” jest używane do tworzenia pól i metod do których dostęp nie wymaga utworzenia instancji klasy.

Statyczne elementy wewnątrz klasy należą do samej klasy. Nie statyczne elementy są kojarzone z każdą kopią obiektu.

Oznacza to, że każde statyczne elementy nie mogą używać elementów powiązanych z instancją/obiektem danej klasy. Na poziomie statycznych elementów instancja klasy i jej elementy nie istnieją.

Z drugiej strony metody niestatyczne mogą korzystać z statycznych metod i pól.

KlasaCzęść NR.8

Klasa jest to szablon używany do tworzenia obiektów. Klasy składają się głównie z dwóch członów: pól i metod. (C# ma tego więcej)

Pola są zmiennymi, które trzymają stan obiektu. Metody definiują, co obiekt potrafi.

Poniżej znajduje się klasa opisująca kwadrat. Ma ona dwa pola x i y oraz metodę GetArea().

TabliceCzęść NR.4Tablica jest strukturą danych używana do sortowania kolekcji wartości. Występuje ona oczywiście  C# i w Javie. Działają one tak samo. Dlatego powstał ten wpis.

Jest ona dosyć prymitywna. Ja osobiście nie pamiętam kiedy ostatnio użyłem tablicy. Każdy jednak kto studiował programowanie na uczelni to zapewne zaczynał swoją przygodę z tą kolekcją.

OperatoryCzęść NR.2Operatory są używane do operowania wartościami.

Można je pogrupować do pięciu typów operatorów: arytmetyczne, przypisania, porównania, logiczne i bitowe.

 

Witam w drugiej części cyklu, która ma uświadomić czytelnika, że składnia językowa pomiędzy Java, a C# nie wiele się różni. Jeśli dobrze znasz Jave lub C#, a nie znasz tego drugiego języka mam nadzieje, że ten wpis ciebie przekona, że ten skok potrzebny do nauki kolejnego języka programowania nie jest taki duży.

ZmienneCzęść NR.1Witam w nowym cyklu w którym szybko będę omawiał składnie języka C#, Java bez zbędnego opisu. Typ wartościowy i typ referencyjny? Nie będzie takich opisów bo mówimy tutaj o składni języka. . Zauważyłem, że 70% ruchu na moje stronie dotyczy wpisów z C# dla początkujących więc kto wie może to nie jest taki głupi pomysł.

Obliczyłem, że ten cykl zajmie 27 wpisów, ale przy dobrym planie powinien zakończyć ten cykl.

ZeroC IceSystemy rozproszone. Jak systemy napisane w różnych środowiskach programistycznych i językach mają się ze sobą komunikować. Usługa sieciowa SOAP bądź RES brzmi sensownie. W drugim semestrze moich studiów magisterski musiałem napisać na zaliczenie różne sposoby komunikacji. Uczelnia PJWSTK jest głównie ustawiona na Jave a co zatem idzie na rozwiązanie CORBA polegającą na komunikacji pomiędzy środowiskami na bardzo niskim poziomie. Jest to szybsze rozwiązanie niż SOAP i REST.

Java+JSJak sprawdzić czy ktoś ma ogólne pojęcie o programowaniu?

Najlepiej zadać mu pytanie jaka jest różnica pomiędzy JavaScript-em ,a Javą. Sam kiedyś dawno temu myślałem ,że oba języki programowania mają ze sobą dużo wspólnego ,że JavaScript jest Javą dla przeglądarek (cokolwiek to znaczy).

Mind F###Na rozmowach kwalifikacyjnych osoby rekrutujące lubią zadawać podchwytliwe  pytania. Przykładowo  przed każdą rozmową kwalifikacyjną z Javy warto byłoby sobie przypomnieć jak działają metody porównywania napisów.

Ich działanie nie jest takie intuicyjne jak się wydaje.  Oto poniższy przykład. Sprawdź swoją wiedzę i sprawdź czy rozumiesz poniższy przykład.

IntegerW pracy musiałem przygotować prezentację na temat MonoDroid, czyli o pisaniu aplikacji na telefony z Androidem w C#. Częścią tej prezentacji były proste przykłady podkreślające dlaczego C# jest lepszy od Javy. Prezentacja miała jednogłośnie podkreślić na jednym slajdzie, że programowanie w C# jest bardziej intuicyjne.

Gdy szukałem powodów, dla których Java jest " zła" natknąłem się na pewne dziwne zachowanie, które wykazuje brak konsystencji w samy języku Javy.

Mimo, iż programuję od kilku lat w Javie nigdy nie natknąłem się na ten problem. Zapytałem weteranów od Javy z uczelni PJWSTK ale nie bardzo wiedzieli o czym ja mówię.

Dlatego pomyślałem sobie , że napiszę ten wpis by zawsze mieć jakieś fajne anegdoty dotyczące języka Java..

Karta SD Akurat piszę aplikację w Javie na telefony z systemem Android. Aplikacja w dużej części korzysta z karty SD. Pytanie “jak w ogóle sprawdzić czy karta ta istnieje ?”. Aplikacja, próbując uzyskać dostęp do czegoś ,czego nie ma, może wywalić wyjątek. Jest to standardowy przykład na to, że w urządzeniach komórkowych nigdy nie ma pewników, zwłaszcza w Android.

Pierwszy sposób na sprawdzenie istnienia karty jest prosty. Pobieramy folder, w którym powinna się znajdować zawartość karty SD. Jeśli folder ten nie istnieje, to znaczy , że karty nie ma..

Polimorfizm  Jak w tytule wpisu.

Jak pamiętasz każdy obiekt w Javie, który jest w związku IS-A może mieć wiele form czyli być polimorficzny. Każdy obiekt z wyjątkiem typu Object jest polimorficzny ponieważ zdają one test IS-A dla swojego typu i dla typu Object

Hermetyzacja

Posiadanie certyfikatu SCJP oznacza ,że znasz każdy aspekt obiektowości w Javie-e. Udowodnia on ,że znasz hierarchie   i potęgę polimorfizmu. Dlatego przez klika dni na blogu w tym kursie będę omawiał zachowanie i zasady obiektowe, które trzeba na egzamin SCJP znać.


Niektórzy programiści nie są  biegli w obiektowości dlatego zacznę od podstaw.

Java EnumUżywanie typu wyliczeniowego redukuje w kodzie pewne nieścisłości. Przykładowo sklep z gitarami może przechowywać wartości określające typy gitar jako napis string. Problem polega na tym ,że do typu string można  umieścić każdy napis. Tworzenie takiego modelu działania dla jakiegokolwiek sklepu stworzyłoby ogromny problem ponieważ system ten byłby podatny na różnego rodzaju błędy.

Do takich zadań w językach obiektowych jest typ wyliczeniowy (enum). Typ wyliczeniowy przyjmuje tylko określone wartości. Oto przykład enum z typami gitar.

Zmienne

Bez występu tym razem są dwa typy zmiennych w Javie.

 

 

  • Primitives (typy proste) Oto kilka przykładowych  typów prostych: char, boolean, byte, short, int, long, double, float.  Gdy typ prosty jest zadeklarowany jego typ nigdy się nie zmienia ale jego wartość zazwyczaj tak.
  • Reference variables (typ referencyjny) Typ referencyjny jest używany jako adres do konkretnego obiektu. Typ referencyjny jest zadeklarowany do konkretnego  typu i ten typ nie może być później zmieniony.  Zmienna referencyjna może referować się do każdego obiektu z zadeklarowanym typem albo podtypem. Później omówię polimorfizm.

Przejdź do deklaracji typów prostych.

AbstractWcześniej omówiłem modyfikator dostępu w składowych klas. Jednak to nie są wszystkie modyfikatory jakie mogą być użyte wobec metod i zmiennych. Modyfikatory “abstract” i “final” zostały już wcześniej omówione ,ale wciąż nie są to wszystkie modyfikatory.
Do omówienia zostały słowa kluczowe jak:“transient”,”synchronized”,”native”,”strictfp” i “static” (na inny wpis).
Najpierw pokażę   słowa kluczowe, które odwołują się zmiennych jak i do  metod. W innym wpisie pokażę jakie zachowanie deklaruje słowo “static” w metodzie i przy zmiennej.

KlasaCzas na deklarowanie klas

Pisząc kod w Javie nie da się uniknąć napisania klas czy interfejsów. Wewnątrz klas jak zapewne wiesz znajdują się zmienne i metody. Od tego jak zadeklarujesz swoją klasę zależy jak twój kod będzie działał. Przykładowo metoda publiczna (public) jest dostępna w każdym punkcie kodu.

Metoda oznaczona jako “prywatna” (private) jest wymazana z dostępu wszędzie poza swoim miejscem deklaracji.

SCJP

Egzamin SCJP jest to podstawowy egzamin z Javy obejmujący ogólną wiedzę z tego języka. Najprawdopodobniej jest to najczęściej  uczęszczany egzamin przez programistów Java ponieważ jest on w końcu z wiedzy ogólnej o języku ,a nie pod technologię X.


Certyfikat ten nie rozwiąże wszystkich twoich problemów związanych z poszukiwaniem pracy ,ale…