Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Java + Linux = <3 — tworzymy środowisko programistyczne na Debianie

Od prawie roku, z zawodu jestem młodszym programistą Java. Swoje pierwsze kroki w programowaniu opisywałem w wpisie "Jak pomimo przeciwności losu zostałem programistą – historia o tym, że..." oraz kolejnym, opisującym strategię samonauki programowania.

Przechodząc przez podstawowe etapy nauki programowania, postanowiłem skrupulatnie spisywać notatki z przeróżnych zadań, czynności czy zachowań. Tak bardzo powszechnych dla doświadczonych programistów, a jednocześnie będących wyzwaniem dla początkujących. Stąd postanowiłem owe notatki publikować na łamach bloga - z myślą o kolejnym "pokoleniu" początkujących programistów :-)

Poniżej po kolei, zainstalujemy i skonfigurujemy następujące narzędzia:

  1. Oracle JDK 7
  2. Apache Maven 3
  3. Apache Tomcat 7
  4. Eclipse Luna

Wszystkie opisane niżej czynności, zostały wykonane na systemie Debian Jessie.

Instalacja JDK 7

JDK, a dokładniej Java Development Kit - to środowisko niezbędne do programowania w Javie, niezależnie od platformy systemowej. Posiada ono podstawowe komponenty umożliwiające kompilacje, debugowanie, archiwizowanie i stos innych, podręcznych dla programisty funkcjonalności.

Najnowszą wersję JDK możemy ściągnąć bezpośrednio ze strony Oracle, akceptując przed pobraniem warunki licencyjne.

W naszym przypadku pobieramy wersję Linux x64 w postaci archiwum tar.gz. Zapisujemy ją do katalogu Pobrane. Następnie tworzymy podkatalog "jvm" w /usr/lib i tam rozpakowujemy pobrane przez nas archiwum. Czyli kolejno wykonujemy komendy:

$ sudo mkdir /usr/lib/jvm $ sudo tar -xvf jdk-7u79-linux-x64.tar.gz -C /usr/lib/jvm/

Następnie przechodzimy do katalogu /usr/lib/jvm i tworzymy dowiązanie symboliczne do katalogu "jdk1.7.0_79", które zostało wypakowane ze ściągniętego archiwum.

$ cd /usr/lib/jvm $ sudo ln -s jdk1.7.0_79/ java

W efekcie, po komendzie ls - powinniśmy zobaczyć następujący efekt:

Konfigurujemy zmienne środowiskowe dla Javy

Kolejnym krokiem, będzie stworzenie prostego skryptu .sh w katalogu /etc/profile.d. Wszystkie zamieszczone tam skrypty są automatycznie wykonywane w momencie uruchamiania powłoki systemowej Bash. Stąd dobrym pomysłem, jest zamieszczenie tam zmiennych środowiskowych dla Javy.

Ważna uwaga! W tym artykule opisuję instalację Javy w wersji Oracle. Natomiast Debian posiada domyślnie zainstalowaną wersję OpenJDK. Dlatego też przed wykonaniem kolejnych kroków polecałbym usunąć wersję domyślną. Można to wykonać za pośrednictwem poniższej komendy: $ sudo apt-get remove openjdk-*

W tym celu z użyciem najprostszego edytora nano, tworzymy skrypt jdk.sh w wyżej wymienonym katalogu.

$ sudo nano /etc/profile.d/jdk.sh

Następnie tworzymy odpowiednie zmienne przed którymi umieszczamy komendę export.

export J2SDKDIR=/usr/lib/jvm/java export J2REDIR=/usr/lib/jvm/java/jre export PATH=$PATH:/usr/lib/jvm/java/bin:/usr/lib/jvm/java/db/bin:/usr/lib/jvm/java/jre/bin export JAVA_HOME=/usr/lib/jvm/java export DERBY_HOME=/usr/lib/jvm/java/db

Przykład:

Po zapisaniu naszego skryptu po każdorazowym uruchomieniu systemu, ustawione przez nas zmienne środowiskowe będą działać. Aby zobaczyć efekt skryptu bez konieczności ponownego uruchamiania, wykorzystajmy polecenie source.

$ source /etc/profile.d/jdk.sh

W następstwie tego, powinniśmy zobaczyć następujące wyniki dla poniższych komend:

$ javac -version javac 1.7.0_79

Oraz

$ java -version java version "1.7.0_79" Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

Super! W takim razie pierwszy krok za nami - mamy już zainstalowaną Javę w systemie :-) Czas na...

Instalacja Apache Maven 3

Apache Maven jest świetnym narzędziem, usprawniającym pracę programisty przy tworzeniu projektów z użyciem Javy. Nie tylko pomaga w budowaniu (ang. build) naszych projektów, ale także kompilacji, zarządzaniu zależnościami do innych bibliotek oraz innych, przydatnych w codziennej pracy dewelopera czynnościach.

Archiwum z Apache Maven możemy pobrać stąd, lub wykorzystać polecenie wget. A następnie wypakować je do katalogu /usr/lib/

$ wget http://ftp.ps.pl/pub/apache/maven/maven-3/3.3.3/binaries/apache-maven-3.3.3-bin.tar.gz $ sudo tar -xvf apache-maven-3.3.3-bin.tar.gz -C /usr/lib/

Dzięki temu, Maven będzie dostępny w lokalizacji /usr/lib/apache-maven-3.3.3. Jednak aby uprościć konfigurację zmiennych środowiskowych, podobnie jak w przypadku JDK - stwórzmy kolejne dowiązanie symboliczne.

$ cd /usr/lib/ $ sudo ln -s apache-maven-3.3.3/ maven

Oraz otwórzmy nasz wcześniej utworzony skrypt jdk.sh i dopiszmy do niego następujące linijki:

$ sudo nano /etc/profile.d/jdk.sh I dopisujemy: export M2_HOME=/usr/lib/maven export M2=$M2_HOME/bin export PATH=$M2:$PATH

Skrypt powinien wyglądać następująco:

Po zapisaniu, użyjmy polecenia source ażeby wykonać nasz skrypt.

$ source /etc/profile.d/jdk.sh

I wykonajmy polecenie mvn - v oczekując wyniku podobnego do tego, zamieszczonego poniżej:

$ mvn -v Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T13:57:37+02:00) Maven home: /usr/lib/maven Java version: 1.7.0_79, vendor: Oracle Corporation Java home: /usr/lib/jvm/jdk1.7.0_79/jre Default locale: pl_PL, platform encoding: UTF-8 OS name: "linux", version: "3.16.0-4-amd64", arch: "amd64", family: "unix"

Apache Tomcat 7

Kolejnym i przedostatnim krokiem, będzie instalacja Apache Tomcat. Jest to tzw. kontener aplikacji sieciowych, budowanych z użyciem Servletów i Java Servlet Pages (JSP).

Wersję siódmą możemy pobrać stąd lub użyć polecenia wget.

$ wget http://ftp.ps.pl/pub/apache/tomcat/tomcat-7/v7.0.64/bin/apache-tomcat-7.0.64.tar.gz

Następnie wykonujemy operacje analogiczne do powyższych.

Wypakowujemy archiwum do katalogu /usr/lib

$ sudo tar -xvf apache-tomcat-7.0.64.tar.gz -C /usr/lib/

Następnie tworzymy dowiązanie symboliczne:

$ cd /usr/lib $ sudo ln -s apache-tomcat-7.0.64/ tomcat

I dopisujemy następujące linijki do skryptu /etc/profile.d/jdk.sh

$ sudo nano /etc/profile.d/jdk.sh Dopisujemy: export CATALINA_HOME=/usr/lib/tomcat

I efekt:

Eclipse Luna - IDE z prawdziwego zdarzenia

Czas na pobranie i instalację naszego środowiska programistycznego w którym będziemy tworzyć, kompilować, debugować i sam Root wie co jeszcze robić z oprogramowaniem pisanym w Javie :-)

Mój wybór padł na bardzo popularne, wieloplatformowe oraz o wielkiej sile IDE w postaci Eclipse'a. Najnowsza wersja o nazwie kodowej "Mars", jest dostępna od czerwca bieżącego roku. Natomiast w tym wpisie będę bazował na poprzedniej wersji czyli "Luna".

Osobiście korzystam z Eclipse'a w codziennej pracy i zauważyłem, że Mars potrafi się zachować mniej stabilnie na Linuxie w porównaniu do Luny. Stąd dla komfortu Czytelników, którzy zapewne chcą rozpocząć swoją przygodę z Javą - opiszę podstawowy proces instalacji i uruchomienia oraz bazowej konfiguracji Eclipse'a w tej właśnie wersji.

Eclipse Luna, możemy pobrać z tej strony. Wybierzmy wersję "Eclipse IDE for Java EE Developers" ze względu na bardziej rozbudowane środowisko Eclipse'a.

Następnie w naszym katalogu domowym, stwórzmy podkatalogi "eclipse" gdzie wypakujemy ściągnięte archiwum z Eclipse'm, oraz podkatalog "projects" gdzie będziemy tworzyć nasze projekty z poziomu Eclipse'a.

$ mkdir ~/eclipse $ mkdir ~/projects

Następnie uruchamiamy plik "eclipse". Zobaczymy okno z logiem Eclipse ładujące podstawowe komponenty, a następnie okno dialogowe proszące o podanie lokalizacji katalogu dla projektów. Oczywiście podajemy ścieżkę do utworzonego przez nas katalogu "projects".

Naszym oczom pojawi się gotowe środowisko. Stwórzmy więc prosty projekt, gdzie wyświetlimy w pętli słynne zdanie "Hello World!". :-)

W tym celu z paska Menu, wybierzmy pozycję "File", następnie "Project...". W kolejnym oknie klikamy na "Java Project".

W kolejnym oknie w polu "Project name" nadajemy nazwę dla naszego projektu...

...by następnie stworzyć nową klasę, klikając prawym przyciskiem myszy na widok naszego projektu w zasobniku "Package Explorer". Dalej przechodzimy na pozycję "New" i klikamy na "Class".

Wypełniamy pole "package" nadając nazwę dla ścieżki naszej paczki oraz nadajemy nazwę klasie. Warto od razu zaznaczyć opcję "public static void main(String[] args)".

Następnie tworzymy następujący (listing poniżej) kod i klikamy na zieloną ikonkę z trójkątem, w celu uruchomienia naszego programu.

package test; public class HelloWorld { public static void main(String[] args) { for(int i = 0; i < 10; i++) { System.out.println("Hello World!"); } } }

Przy okazji, polecam zgłębić mój wpis dotyczący renderowania czcionek na Linuxie. Z doświadczenia wiem, że odpowiednia czcionka i jej jakość wyświetlania, znacznie potrafi zwiększyć komfort pracy.

Efekt działania zobaczymy w zakładce "Console".

Oto Twoje środowisko do programowania w Javie

Super, właśnie stworzyłeś pierwszy program w Javie i skonfigurowałeś swoje środowisko programistyczne na Linuxie. Kolejne kroki należą już do Ciebie, teraz już czas tylko kodzić, kodzić i jeszcze raz kodzić :-)

W kolejnych wpisach, w miarę czasu chciałbym opisać inne, podstawowe zagadnienia w tworzeniu oprogramowania w Javie. Choćby przykład prostej webaplikacji w oparciu o Servlety, JSP'y oraz Tomcat'a, a wszystko przy udziale Maven'a. Mam nadzieję, że uda się zrealizować to w jak najszybszym czasie... ;-)

Tymczasem połamania klawiszy życzę...  

linux porady programowanie

Komentarze

0 nowych
mordesku   7 #1 18.09.2015 08:58

dobry wpis :) dla rozpoczynających przygodę z javą. Osobiście polecam IntelliJ IDEA jako środowisko programistyczne choćby w wersji community. Edycja Ultimate ma super wsparcie dla jaby EE, hibernate, springa i innych zacnych frameworków. Jak ktoś pisze w javie ee na poważnie warto wydać te parę stówek na taki soft. Piszę to jako wieloletni użytkownik Eclipse i Netbeans.

Autor edytował komentarz.
Frankfurterium   9 #2 18.09.2015 09:23

JDK z PPA, Tomcat/Jetty jako plugin mavenowy, a i samego Mavena można zainstalować z repozytorium, potem ręcznie nadpisać instalację plikami z nowszej wersji. Środowisko gotowe w pięć minut i bez grama konfiguracji ;-)

GBM MODERATOR BLOGA  19 #3 18.09.2015 09:29

@Frankfurterium: Jasne, że tak i na pewno jest to uproszczony oraz łatwy schemat instalacji.
Tylko osobiście wychodzę z założenia, że Początkujący programista powinien przeklikać kilka razy proces instalacji, opiewający właśnie o konfiguracje. Zaprocentuje mu to na przyszłość, bo nie wszędzie i nie zawsze menedżer pakietów będzie dobrym rozwiązaniem :-)

Autor edytował komentarz.
  #4 18.09.2015 09:37

Wszystko fajnie tylko po co taki tytuł???? Szczególnie "<3" .... rozumiem że wpływ redakcji rzuca się już na blogerów...

Silny Ogór   2 #5 18.09.2015 10:12

Wypada na koniec dodać, że JDK7 nie jest już wspierane i zostało oficjalnie oznaczone jako dziurawy rupieć.

mordesku   7 #6 18.09.2015 10:16

@Silny Ogór: jeśli używasz javy na desktopie to owszem zwłaszcza jako plug do przeglądarki. Ale jako środowisko uruchomieniowe dla aplikacji webowej większość tych dziur nie ma ma zastosowania.

  #7 18.09.2015 10:37

Zawsze śmieję się z takich jak ty, kolego. Ponieważ kombinujesz jak koń pod górę i ze wszystkich sił starasz się utrudnić sobie życie. Oto jak powinno się zainstalować te rzeczy, o których piszesz na Debianie:
- Java: https://wiki.debian.org/JavaPackage
- Maven: apt-get install maven
- Tomcat7: apt-get install tomcat7
- Eclipse: apt-get install eclipse

Nie łatwiej?

command-dos   17 #8 18.09.2015 12:44

gdyby tylko trochę więcej chęci było... :)

  #9 18.09.2015 15:25

Programy javy na desktopie Linux i Windows działają nadal wolno jak flaki z olejem. Na desktop już zawsze będzie królowało C++/QT5 i C/ANSI/GTK.
Do C# to nawet nie podchodzę MonoDevelop uruchamia się tylko z konsoli, a ta okrojna wersja VisualStudio Core na Linuksa to jakiś żart...

PAMPKIN   10 #10 18.09.2015 16:45

@benek998 (niezalogowany): W sumie to czekam na odpowiedź GBM'a - wprawdzie mam na ten temat własne zdanie ale...

awangardowy   7 #11 18.09.2015 16:52

banał i podstawy dla kogoś kto pracuje w tym, ale...

czy jesteś pewny, że Eclipse to jedyny wybór ;) ?

ostatnio coraz więcej osób idzie jednak do jetbrains.

weźmy jeszcze NetBeans.
ma w zestawieniu z Eclipse jeden potężny plus:
łatwość pisania wtyczek.

NetBeans:
nei ruszałem przez rok, po roku wróciłem, zainstalowałem jakiś plugin i dosłownie po 3 godzinach(!) zdebugowałem problemy. Sam tutorial pisania wtyczek ma może z 4-5 stron A4. Po tygodniu spędzonym z NetBeans można spokojnie się nauczyć pluginować na własne potrzeby.

co jest lepsze?
Eclipse+ dużo pluginów +ale trudne pluginowanie swoich potrzeb

NetBeans + mniej pluginów + mniej funkcji + ale bardzo łatwe pluginowanie swoich możliwości?
prosty tutorial: http://wiki.netbeans.org/IntroNetBeansPluginDev

NetBeans niby ma gorszą integrację z shellem, co w przypadku Linuxa jest wielkim minusem.
no ale jest prościutkie pluginowanie, co może niejednokrotnie się odwdzięczyć... programista podobno powinien korzystać z narzędzi autorskich, które sam szyje na własne potrzeby.

sam nie wiem co jest lepsze, korzystam z Eclipse+vim, ale zazdroszczę prostego pluginowania w NB.

Autor edytował komentarz.
awangardowy   7 #12 18.09.2015 16:54

@benek998 (niezalogowany):

nie, nie jest łatwiej, bo takie Eclipse z repozytoriów jest przestarzałe. Reszta tak samo, a takie open jdk to w ogóle nieporozumienie. Jak chcesz najnowsze orpogramowanie to musisz patrzeć na strony producenta.
Bardzo dobry wpis dot. instalacji, w sensie, że w ten sposób co autor pokazał.
Żeby sprawa była jasna:

sposób pokazany we wpisie jest chyba "jedynym sensownym" sposobem instalacji środowiska dla javy, jeżeli ma być najnowsze.

GBM MODERATOR BLOGA  19 #13 18.09.2015 16:58

@benek998 (niezalogowany): Oczywiście, że łatwiej i że jest to droga przy której nie trzeba "kombinować". Ale tak jak odpowiadałem @Frankfurterium - w ten sposób, Początkujący programista - jest w stanie zrozumieć w pewnym zakresie podstawy. Imho na początku właśnie lepiej jest jak najwięcej czasu spędzić na konfiguracjach i ich dostosowywaniu. Dzięki temu można się naprawdę sporo nauczyć...

Ponadto, niestety nie we wszystkich warunkach będziemy mogli skorzystać z menedżera pakietów, a także nie zawsze w repozytorium w sposób automatyczny uzyskamy konkretną (np. w danej sytuacji wymaganą) wersję oprogramowania. Stąd opisany przeze mnie sposób instalacji jest w miarę uniwersalny i sądzę, że każdy powinien go znać :-)

@PAMPKIN proszę, doczekałeś się mojej odpowiedzi :-)

@Anonim: Wyluzuj podobnie jak tytuł tego poradnika... I nie ma on nic wspólnego z Redakcją, nie wiem skąd w ogóle taki pomysł...

@command-dos Chęci i czas zawsze się znajdą - trzeba tylko zrobić ten pierwszy krok ;-P

GBM MODERATOR BLOGA  19 #14 18.09.2015 17:02

@awangardowy: Nie, Eclipse nie jest jedynym wyborem. Ale postaw się w miejscu Początkującego - będzie on potrzebował narzędzia, które ma zaplecze w postaci: dokumentacji, społeczności (która wspólnie rozwiązuje powszechne problemy - np. na StackOverflow.com) oraz dużej ilości materiałów pomocnicznych (tutoriali, manuali itd. itp.) w Internecie.

I oczywiście można się kłócić, że inne IDE może być porównywalnie lepsze lub nie, ale to nie o to chodzi. Ważne, żeby zachęcić do programowania i zrobić pierwsze kroki, nabrać praktyki oraz doświadczenia, a potem... taki osobnik sam sobie już będzie dobierał narzędzia do pracy ;-)

Autor edytował komentarz.
command-dos   17 #15 18.09.2015 17:05

@Anonim (niezalogowany): nie znasz podstaw matematyki? Java plus linux jest równy lub mniejszy od 3 - simple ;)

awangardowy   7 #16 18.09.2015 17:09

@GBM:

czekam na wypisanie pluginów Eclipse ;)

tip numer 1:
jak cokolwiek zarabiasz na tym programowaniu to naprawdę warto kupić licencje myeclipse:
https://www.genuitec.com/products/myeclipse/

eclipse samo jest gorsze prawdopodobnie od jetbrains.
eclipse+myeclipse ? już niewiadomo, tutaj mamy prawdziwą bitwę.

tip numer2:
kanał #eclipse na IRC , serwer freenode
wystarczy grzecznie poprosic, to zaraz ktos pomoze jakby były problemy ;)

tip numer3:
warto nauczyc sie obslugiwac bugzille. Nawet jak ktos ma problemy związane z własnymi kompetencjami, to zawsze mozna zglosic to jako "bug" to i tak pomogą ;) wazne zeby kulturalnym byc

Autor edytował komentarz.
PAMPKIN   10 #17 18.09.2015 17:14

@GBM: No to zaoszczędziłeś mi pisaniny, pozdrawiam. Podobnie myślimy!

GBM MODERATOR BLOGA  19 #18 18.09.2015 17:15

@awangardowy: Spoko, jak tylko znajdę chwilę - zbiorę podstawowe, przydatne pluginy z myślą, aby Czytelnicy zaproponowali też swoje. Bo zauważyłem, że liczba osób korzystających z Eclipse nie jest mała na DP ;-)

@PAMPKIN hehe, spoko - dzięki i wzajemnie :-)

PAMPKIN   10 #19 18.09.2015 17:19

@awangardowy: Dobry pomysł. Ja wprawdzie używam Eclipsa tylko z jednym pluginem, ale fakt bez niego byłby tyłek.

awangardowy   7 #20 18.09.2015 17:24

@all

nie żartuję, jak tylko cokolwiek zarabiacie na programowaniu, a chcecie zostać przy eclipse/java, to jak najszybciej myeclipse. Jest to grupa komercyjnych developerów, czyli to nie jest darmowe open-source. Oni się z tego utrzymują. Bardzo dużo bugów zlikwidowali, rozwinęli też martwe pluginy. No i funkcjonalność w wielu miejscach została poprawiona.
https://www.genuitec.com/products/

nie jest to kryptoreklama, nie mam z nimi nic wspólnego.

bo inaczej koledzy korzystający z jetbrains mogą mieć lepsze wyniki...

Autor edytował komentarz.
mikolaj_s   13 #21 18.09.2015 17:54

Na moim poziomie znajomości IDE to chyba obojętne czego używam. Jednak IDEA wydaje się wygodniejsza niż Eclipse, a do tego sporo żwawsza. Netbeansa też używałem, ale plugin Scali nie jest za dobry.

Mógłbyś opisać jakieś ciekawsze technologie Javowe bo te co wymieniłeś używa się teraz już tylko w korporacjach. Mało kto chce je używać z własnej nieprzymuszonej woli. ;)

@awangardowy:
Nie jedyny. Prostsze jest korzystnie z pracy społeczności.
http://ppa.webupd8.org

awangardowy   7 #22 18.09.2015 18:12

@mikolaj_s:

ciekawe technologie javove dla osób, które nie są z korpo, czy wręcz siedzą w domu a nie w firmie IT (projekty domowe)?

no przecież odpowiedź jest tylko jedna, jedyna i oczywista:
Android.
:)

ale interesujące jest, czy ktoś ma lepszy pomysł.

Autor edytował komentarz.
muska96   8 #23 18.09.2015 20:00

Fajny wpis - może się przydać, ale warto raczej siedzieć na Javie 8 - dodano kilka dość istotnych zmian takich jak "Lambda Expressions" - po resztę zmian odsyłam do strony: http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html
Ja osobiście wolę Netbeans z jednego powodu - łatwe i wygodne tworzenie GUI.

Frankfurterium   9 #24 18.09.2015 20:02

@awangardowy: Jestem leniwy, ufam pakującemu w tym konkretnym PPA, JDK zainstalowane w ten sposób działa dokładnie tak, jak sobie tego życzę. Przy ręcznym ściąganiu i konfiguracji nic nie będzie działało lepiej. Dziesiątki razy instalowałem środowisko ręcznie, ale przestałem, bo nie widzę w tym żadnego zysku. No chyba że mówimy o serwerach produkcyjnych, gdzie każdy pakiet musi pochodzić ze sprawdzonego źródła i najlepiej być ocertyfikowany (chociaż tam raczej nie używamy debianowców, więc "problem" PPA znika), ale tak dla siebie...

Mam parę ansible'owych (kapitalna ale nieszczególnie popularna technologia mocno ułatwiająca życie) skryptów automatyzujących tworzenie środowisk na desktopie, wirtualce (Vagrant, Docker, też dobre rzeczy) i chmurze, ale i te są raczej wysokopoziomowe i zamiast wszystko ręcznie konfigurować po shellach, zwyczajnie dodają i odpalają PPA. Mniej dłubania, więcej działania.

Autor edytował komentarz.
awangardowy   7 #25 18.09.2015 20:25

@Frankfurterium:

wiesz co, nie ma się co tu kłócić, na Debianie nie mamy ppa, a hackować repozytorium Ubuntu w tym przypadku mi się nie chce.

Generalnie jak coś ważnego mam instalować - a java jednak taka jest - to zawsze korzystam bezpośrednio ze strony producenta.
Te skrypty z GitHub oparte są na stronie producenta i widzisz dokładnie co się dzieje.
Raczej instaluję ręcznie, tak jak autor tego wpisu, ale jak będzie czas to w najbliższych latach uszyje się jakiś skrypt (nie jest to priorytet).

Co do tego ansible. Składnia yaml, podobno jest to wygodne i uniwersalne narzędzie... nie jest to takie złe, ale jakoś wolę prywatne repo git (np. bitbucket: https://bitbucket.org/ - za darmo jest priw) + autorskie skrypty. Co kto lubi.

Fajna jest tendencja, aby jak najwięcej konfiguracji opierać na GIT (prywatnym lub publicznym).
Mam takie dziwne wrażenie, że ansible jednak próbuje zastępować GIT. Ale może to tylko wrażenie? Ansible ma sens chyba jak jest dużo tych serwerów i się w kółko coś ustawia, usuwa, instaluje. Albo jak jest jakieś rozwiązanie cloud computing i serwery chodzą w maszynach wirtualnych.

Autor edytował komentarz.
mikolaj_s   13 #26 18.09.2015 23:34

@awangardowy: "Skoro masz wszystko ładnie podane na oficjalnych stronach to po co przez pośredników? "

Tam są najnowsze wersje, które zaciągasz robiąc update aptem. To jest znacznie wygodniejsze.

Ostatnio byłem na ciekawym spotkaniu:
http://www.meetup.com/Trojmiasto-Java-User-Group/events/224882646/
Daje to do myślenia o świecie Javy.

Frankfurterium   9 #27 18.09.2015 23:52

@awangardowy:
1. Te konkretne PPA bez żadnego bólu działa z Debianem.
2. Instalator Javy z PPA to nic innego niż skrypt, który ściąga najnowszą wersję nie skądinąd, tylko prosto ze strony Oracle'a
3. Prawdziwy potencjał Ansible faktycznie objawia przy wielu hostach, ale przy jednym, lokalnym działa tak samo dobrze. Jego siłą jest ekstremalna wysokopoziomowość. Oprogramowuje się to, co ma zrobić, a nie jak.
4. Ansible nie próbuje zastępować Gita, bo... Git to żaden system ani standard konfiguracji. Ot, paru ludków wpadło na fajny pomysł, że tekstowe pliki konfiguracyjne będą trzymali na repo i tyle.

  #28 21.09.2015 08:24

@awangardowy: Kolego, co ty chrzanisz? Eclipse nie jest stare, a podany link opisuje instalację jaby od Oracle a nie OpenJDK, widać że nawet go nie raczyłeś otworzyć.

awangardowy   7 #29 21.09.2015 16:07

Ansible wygląda OK. Może właśnie w tym jest silne, że wysokopoziomowe i nie trzeba programować, ale po prostu wypisać to jak ma być to wszystko zainstalowane... kiedyś sprawdzę, wygląda przekonywująco ;)

koncepcja "playbooka" przypomina najzwyklepszy skrypt w python/bash. Ale rzeczywiście ta składnia jest bardziej ogólna i nie trzeba zagłębiać się w tyle szczegółów.

Autor edytował komentarz.
awangardowy   7 #30 21.09.2015 16:10

co do możliwości javy - wiadomo, że są spore, np. w Androidzie ;)

Autor edytował komentarz.
  #31 23.09.2015 08:34

@awangardowy: No to spróbuj użyć w Androidzie lambdaj, bo oczywiście Javy8 czyli natywnych strumieni i lambda nie uświadczysz (tam ciągle java 7).

  #32 23.09.2015 09:24

@Anonim (niezalogowany): Też tak kiedyś myślałem ale potem sprawdziłem I zacząłem pisać apki w java zarówno na desktop jak I na web.
Kwestia wydajności leży głównei po stronie programisty, możesz pisać I asemblerze ale jak nie przemyślich architerkury algorytmów to się okaże że napisałeś muła :)

koneton   6 #33 27.09.2015 00:59

Bardzo ciekawy artykuł, ale z mojego doświadczenia (11 lat z Javą i podobnie z Linuksem) wynika, że taki układ zupełnie się nie sprawdza. Poza Mavenem, który może być globalny, cała reszta powinna być lokalnie.
1. I tak Java - trzeba mieć dużo szczęścia by jedna wersja obsługiwała wszystkie projekty. Ja opiekuję się aplikacjami, które działają na Javie 1.3, 1.4, 1.5, 1.6 i 1.8. Żadna z tych wersji Javy nie jest dodana do ścieżek/katalogów globalnych. W Eclipse dodaję je jako kolejne JRE. Dzięki temu każdy projekt ma własną wersję Javy a w systemie jest porządek.
2. Maven - jak już wspomniałem, jest na tyle uniwersalny, że rzeczywiście można go instalować globalnie. W repozytoriach jest pewnie wersja 3, ale dobrze współpracuje z skryptami wytworzonymi w 2, więc problemu nie ma.
3. Tomcat - tak jak z javą, często aplikacje działają na różnych wersjach, więc i programista musi mieć ich kilka. W przypadku Tomcata sprawa jest prosta, bo nie trzeba go instalować - po prostu rozpakowujesz i konfigurujesz plik startup.sh. Tam powinieneś ustawić JAVA_HOME i CATALINA_HOME właściwe dla danej instancji.
4. Eclipse to również moje ulubione środowisko do programowania. Niezależnie, czy to Java czy PHP, nawet trochę C w tym pisałem, a jak trzeba było to nawet plugin do SQLa dawał radę. Warto przy nim pamiętać o kilku ważnych sprawach. Tak jak wcześniej pisałem, czasami jest konieczność posiadania kilku wersji oprogramowania (chociażby przez pluginy, które potrafią działać z różnymi lub gryźć się wzajemnie). Następnie warto pamiętać, że Eclipse działa najlepiej z Javą tylu bitową jak system. Jest to szczególnie ważne, gdy bawisz się JavaFX. Przed zaczęciem pracy z Eclipse warto przeedytować plik konfiguracyjny i dodać/zmienić tam kilka opcji. Ścieżka do javy np:
-vm
(..)/jdk1.8.0_45_x64/bin/java
I parametry uruchomienia jvm (przykładowe moje):
-vmargs
-Dosgi.requiredJavaVersion=1.7
-XX:MaxPermSize=512m
-Xms256m
-Xmx1024m
Warto z tymi parametrami trochę poeksperymentować, ale zazwyczaj widać dużą poprawę w wydajności.

Tak czy siak, należą Ci się duże brawa za opis i wysiłek jaki w to włożyłeś. Powodzenia z Linuksem i Javą!

GBM MODERATOR BLOGA  19 #34 27.09.2015 18:25

@koneton: Dziękuję za dobre słowo i świetne uzupełnienie w postaci komentarza :)

Wpis jest bardzo poglądowy z ukierunkowaniem dla początkującego programisty, który stawia pierwsze kroki. Mam nadzieję, że udało się jako tako :P

  #35 29.09.2015 19:41

Rozdzielmy fazy projektu: dev, testy, produkcyjna.
W tej 1 rzadzi maven. Nie powinnismy sie uzalezniac od IDE i jego pluginow, a bardziej oprzec developerke na mavenie i jego pluginach.
Eclipse ma juz pelne domyslne wsparcie z mavenem. Wiec tu nie powinno byc z tym problemu. Oprocz tego maven zadziala wszedzie tak samo czy to przez ssh czy lokalnie.
Za pomoca pom'a okreslamy - z ktorej wersji javy bildujemy i kompilujemy itd.
To samo z kontenerami serwletow, rowniez okreslamy je w pom'ie.
Uzywamy pluginow do poma takich jak bugfix, cos do formatowania kodu. itd. Jesli potrzebujemy cos do generowania kodu. To tez fajnie byloby to zalatwic w pomie.
W przypadku mavena warto korzystac nie tylko domyslnego repo ale tez: https://oss.sonatype.org/ . W przypadku duzych projektow nie obejdzie sie tez bez wlasnego repo.
Projekty, ktore uzaleznimy od poma sa latwiejsze w utrzymaniu, w uruchomieniu, kazdy dev bedzie mogl pracowac na wlasnym IDE jakie sobie tyko wymazy. Jest to tez obowiazek dla projektow open source.

W przypadku testow i duzych projektow przydaje sie Jenkins. Najczesciej lezy gdzies na serwerze. I tez uruchamia polecenia mavena. Za pomoca niego odpala testy integracyjne oraz selenium... Oraz analiza statystyczna kodu zrodlowego... IMO wdrozenie Jenkins'a jest wazniejsze niz reczna instalacja tomcatow.... Ktore w erze chmur PaaS sa zbedne ( na produkcji tez).

Jesli w pelni kontrolujemy serwer produkcyjny. To instalujemy jakis serwer aplikacji lub zwykly kontener. I tu wazne - staramy tez nie uzalezniac sie od tomcatow czy innych bibliotek z serwerow aplikacji, dzieki temu w latwy sposob przeniesiemy nasz projekt do chmury lub gdzie indziej.

  #36 08.10.2015 20:00

Podoba mi się sposób w jaki opisujesz kolejne etapy instalacji. Prosto i skutecznie. Czekam na konkretne przykłady (nie tylko Hello Świecie) jak używać Tomcata i Mavena.

kostek135   8 #37 13.10.2015 00:01

@koneton: Wiem, że komentarz trochę stary, ale po co ci parametr modyfikujący Permanent Generation Space, skoro uruchamiasz eclipse'a na Java 8, a z domyślnych maszyn dla OracleJRE oraz OpenJRE (HotSpot) został usunięty i zastąpiony natywnym Meta Space'm - tak jak jest to zrobione od niemal zawsze w J9 czy JRockit.

Autor edytował komentarz.
koneton   6 #38 13.10.2015 18:48

@kostek135: ponieważ ustawienie pliku ini kopiuję między kolejnymi wydaniami Eclipse/Javy, bez zbędnego zastanawiania się, czy konkretny parametr jest jeszcze potrzebny. Rzeczywiście w Javie8 nie ma już zastosowania.

zaba285   6 #39 19.10.2015 17:14

@GBM: zgadzam się, doświadczony programista powinien użyć opcji 5 minut i działa, świeżak powinien przez to przebrnąć ręcznie, oswoi się z linuxem trochę. Pamiętam jak po 1,5 roku bez linuxa musiałem postawić środowisko programistyczne na Ubuntu, taki wpis byłby wtedy na wagę złota ;-) ale zaprocentowało, trochę walki i łatwiej było sobie przypomnieć linuxa

Autor edytował komentarz.