Jakie są powszechne praktyki tworzenia Javy w systemie Linux?

Próbuję przenieść się z systemu Windows na Linuksa jako platforma programistyczna Java i chociaż przejście było generalnie dość bezbolesne, jest kilka kwestii niepewności, na które chciałbym uzyskać opinie. Używam openSUSE 11.4, ale jestem otwarty, aby usłyszeć, co działa na innych dystrybucjach.

  1. skąd instalujesz swój JDK?Ten jest zaskakująco nie tak cięty i suchy, jak większość ludzi to robi. OpenJDk 6 jest dostępny w repozytoriach openSUSE i został bardzo łatwy w instalacji. Jednak obecnie jest to aktualizacja 21, a teraz wydanie Oracle jest w aktualizacji 24. Jestem przyzwyczajony do małego alertu w systemie Windows informującego mnie, że moja Java wymaga aktualizacji, ale to nie wydaje się być normą w Linuksie. Czy Programiści Javy rezygnują z JDK w swoim menedżerze pakietów i instalują plik binarny bezpośrednio? A może jest inny sposób?
  2. gdzie zainstalować Eclipse? wydaje się, że w Internecie jest ogólna umowa, że Eclipse najlepiej zainstalować po prostu pobierając binarny i wypakowujä ... c go gdzieĹ", ale gdzie zwykle rozpakowaĺ ' bym program typu Eclipse czy Ant? Widziałem głosy za/usr /local i / opt online, ale nie ma ostatecznej odpowiedzi.
  3. Gdzie umieścić swój pomost / Tomcat? podobne do pytania eclipse, gdzie większość programistów Linux Java umieszcza swój kontener Jetty/Tomcat/other.
  4. Jakie są różnice między sposobem, w jaki konfigurujesz rozwój a produkcję przynajmniej wydaje mi się, że nie chcę uruchamiać mojego kontenera servlet jako root, to ma dla mnie sens. Ale na jakie inne praktyki powinienem uważać? Czy jest coś jeszcze, co mogłoby ułatwić moje środowisko programistyczne, ale być może mniej bezpieczne?

Znalazłem to pytanie było podobne, ale ostatecznie zbyt wysoki poziom i nie wnikałem w szczegóły, jak prawdziwi deweloperzy konfigurują swoje środowisko. Jeśli są inne zasoby, które według Ciebie odpowiadają na te pytania, podziel się nimi proszę.

Dziękuję za poświęcony czas.

Author: Community, 2011-03-16

6 answers

Q > skąd instalujesz swój JDK?
A > nigdy nie przejmuję się innymi JDK pochodzącymi spoza Sun / Oracle głównie dlatego, że nasz produkt jest certyfikowany tylko do współpracy z Sun / Oracle JRE. Na pulpicie uruchamiam Kubuntu, ale nigdy nie używam apt-get do tego, ale zawsze pobieram je ręcznie. Uzasadnienie:

  • opiekunowie dystrybucji rzadko spieszą się z aktualizacją pakietów, ponieważ ich głównym problemem jest sprawienie, aby zależne od nich aplikacje (takie jak OpenOffice) działały. Jeśli JDK zmieni się od 1.6.0_20 do 1.6.0_21, po prostu ich to nie obchodzi. Mogę to zrobić, ponieważ nowsza łata może mieć ważną poprawkę lub po prostu chcę spróbować, jeśli moja aplikacja nadal przechodzi wszystkie testy jednostkowe.
  • zachowanie starych wersji JDK może być koszmarem. Nadal wspieramy starsze wersje naszego produktu i jeśli uaktualnię do nowszego Kubuntu, nie mam gwarancji, że jakiś starożytny JDK będzie nadal dostępny jako pakiet.
  • nie jestem pewien, czy niektóre dystrybucje obsługują nawet wielokrotne istnienie JDK na tym samym maszyna.

Moje preferencje To pozostawienie wszystkich JDK/JREs w /opt i utworzenie dowiązania symbolicznego do najnowszego lub tego, którego najbardziej potrzebuję. Po prostu nie rozumiem, dlaczego Ręczna instalacja JDK jest problemem.

Ustawiłem również PATH na najnowszy JDK / JRE.

To samo (i podobne argumenty) dotyczy Ant i Maven.

Q > gdzie zainstalować Eclipse?
A > używam IntelliJ, ale to samo dotyczy. Przechowuję IDE w moim folderze domowym. To pozwala mi mieć różne wersje, aktualizować je bez potrzeby sudo, itp. Równie dobrze mogłem zainstalować go w /opt, ale chyba mam ten nawyk, gdy co tydzień pobierałem i testowałem najnowszy IntelliJ IDEA EAP, więc mogę szybko usunąć starsze wersje i nie zanieczyszczać /opt. W końcu inne programy mogą wymagać Ant / Maven/JDK ale to tylko ja używam IntelliJ stąd inne podejście.

Q > gdzie umieścić swój pomost / Tomcat?
A > mam oddzielny folder tomcats Pod /home gdzie mam ~10 różnych instancji Tomcat. Każdy z Tomcatów jest używany do innej wersji mojej aplikacji (łączymy Tomcat z naszą aplikacją). Jest to konieczne, ponieważ jedno wdrożenie naszej aplikacji może mieć inne ustawienia Tomcat (lub nawet wersję) niż inne.

Q > jakie są niektóre różnice między sposobem konfiguracji rozwoju a produkcji
A > to bardzo zależy od twojej aplikacji. Na przykład, potrzebujemy niektórych partycji, aby mieć mniejsze opóźnienia dostępu, ale mające mniej miejsca (np. gigabajty dla indeksów Lucene) w porównaniu z innymi, które mogą mieć większe opóźnienia, ale wymagają więcej miejsca (np. terabajty dla repozytoriów zawartości). My jednak projektujemy naszą aplikację tak, że wszystkie te różne aspekty mogą znajdować się na różnych partycjach, które są konfigurowalne. Niektóre partycje muszą mieć specjalne ograniczenia (np. przesyłanie plików), więc nie przepełnia to innych partycji. Nie ma prostej odpowiedzi na to pytanie, ale oczywiście większość tych problemów nie ma większego znaczenia dla środowiska programistycznego.

 7
Author: mindas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-17 13:36:05

Skąd instalujesz swój JDK?

Sam używam Arch Linuksa, a w samym repozytorium mamy oracle jdk/jre. Dlatego użyj swojego distro-repozytorium, jeśli ma oracle jdk / jre, inaczej pobierz go z samego oracle.

Gdzie zainstalować Eclipse?

Ponownie, ta sama odpowiedź jak powyżej odnosi się również do tego. Jeśli jednak jest jakiś problem z dostarczoną wersją distro, zawsze umieszczam moje niestandardowe instalacje w /opt / - / opt / java , /opt / eclipse, / opt / netbeans-itd. Nie instaluję rzeczy w moim folderze domowym (z wyjątkiem sytuacji, w których nie mam uprawnień nigdzie indziej - rzadko), ponieważ oznaczałoby to, że inni użytkownicy będą potrzebować dostępu do mojego folderu domowego, aby uruchomić te rzeczy. Nie chcę, aby produkcja (lub rozwój w tym zakresie) rzeczy miały bezpośredni dostęp do mojego domu.

Gdzie umieścić swój pomost / Tomcat?

Ta sama odpowiedź jak powyżej ma zastosowanie również tutaj. Tylko w okolicznościach, w których mam zainstalowałem więcej niż jedną wersję, tworzę /opt / experimental / i instaluję tam, aby wiedzieć, która z nich moja produkcja jest uruchomiona, a którą mogę usunąć, gdy nie jest już wymagana.

Jakie są niektóre różnice między sposobem konfiguracji rozwoju a produkcja?

Jeśli to możliwe, zawsze konfiguruję różne maszyny do prac produkcyjnych i rozwojowych. Różne komputery, ale dokładnie identyczna konfiguracja. Jedyne systemy, które potrafią wcisnąć kod do system produkcyjny należy do grupy rozwojowej. Tam, gdzie ta segregacja nie jest możliwa, wolę mieć inną instalację dla serwerów, aby podczas poprawiania konfiguracji programistycznej moje główne serwery nie zawiesiły się ani coś. Również konfiguracja deweloperska zazwyczaj zawiera skrypt clean_up, który sprawia, że jest gotowy do produkcji (zrzucanie niepotrzebnych przywilejów dla kont db, czyszczenie, itp.

Mieć cokolwiek, konfiguracja będzie, tylko upewnij się, że masz inny konfiguracja bazy danych dla celów rozwojowych i produkcyjnych.

 3
Author: Sujoy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-17 13:56:09

Słoneczna Wersja Javy Dla openSUSE znajduje się na dysku nonOSS (Przejdź tutaj i przewiń w dół, aby znaleźć ISO), który jest dodatkowym obrazem dysku, a nie częścią głównej ISO dysku instalacyjnego (lub możesz pobrać rpm z tutaj).

Jeśli chodzi o eclipse, to jeśli instaluję na poziomie systemu, to zazwyczaj wrzucam go w /opt. Możesz przeczytać Ten artykuł o tym, jak najlepiej obsługiwać wtyczki.

(nie pozwól im się odciągnąć od openSUSE, jest to najlepsza Dystrybucja dla KDE IMO.)

 2
Author: Evan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-17 06:03:22

Praca z Linuksem to o wiele mniej trzymania ręki niż środowisko windows, którego używasz. Na Twoim miejscu zamieniłbym DISTRO na RedHat lub Ubuntu, używam SUSE i nigdy nie oglądałem się za siebie od czasu przełączenia.

Możesz umieścić swoje binaria JDK / Eclipse / Tomcat w kilku różnych miejscach. Jeśli jesteś jedynym, który będzie z nich korzystać, proponuję umieścić je gdzieś w swoim katalogu domowym. Do swoich rzeczy Eclipse/Tomcat można ale je w lokalnym koszu, a następnie dodać ten lokalny pojemnik na twoją ścieżkę w Twoim .bashrc. Możesz także ustawić lokalizację swojego JDK na zmienną JAVA_HOME env w bash. Jeśli potrzebujesz bardziej szczegółowej pomocy w konfiguracji daj mi znać.

 1
Author: Grammin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-16 14:46:33

1) mieliśmy kilka problemów z OpenJDK (błędy, itp.) więc zawsze używamy sun jdk.

2/3) dobrą zasadą, której należy przestrzegać żyjąc w Linuksie, jest zawsze instalowanie własnego oprogramowania w folderze domowym. Linux musi być od czasu do czasu ponownie instalowany, ale wszystko w folderze domowym znajduje się na oddzielnej partycji dyskowej, więc żyje dalej. Zawsze instaluję / rozpakowuję niestandardowe oprogramowanie takie jak eclipse do / home / myuser / opt, więc moje eclipse żyje w ~ / opt / eclipse. I również symlinks the eclipse-binary do folderu my / home / myuser / bin dla łatwego dostępu. Kiedy aktualizuję lub zmieniam jakiekolwiek oprogramowanie, po prostu przeinstalowuję dowiązanie symboliczne.

4) środowiska produkcyjne i programistyczne powinny być jak najbardziej zbliżone do identycznych. Eliminuje to masę błędów spowodowanych różnymi konfiguracjami itp.

 1
Author: Vidar Johansen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-16 14:46:43

Tworzę katalog / usr / local / java i rozpakowuję tam JDK( y), Eclipse, Maven, Ant, Groovy i Grails, a następnie tworzę dowiązania symboliczne do /usr/local/bin.

 0
Author: florin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-16 14:45:40