Java enterprise - wybór czegoś innego

0

Cześć wszystkim
Od jakiegoś czasu interesuje się javą enterprise. Co prawda nie poznałem jej zbyt wiele, bo liznąłem podstawowe pojęcia, servlety, java servlet pages(JSP) i jakiś czas już javaserver faces(JSF). Nie pracuje, dopiero się uczę, a programowanie traktuje jako takie duże hobby :) Nie ukrywam, że jakoś tam chciałbym je powiązać z przyszłością.. ale nie o tym chciałem pisać.
Na forum piszą, żeby chwytać się technologii, w których czujemy się fajnie i miło. I dużo nie rozwodząc się: nie jestem pewien czy java enterprise mi podchodzi pod gusta. Tzn przyjemnie się piszę, ale gdybym chciał spróbować czegoś innego to co byście polecili?

Chodzi o jakiś język, który ma przyszłość i miło gdyby dało się w nim popracować w większych projektach, np w pracy. Żebym poczuł coś innego niż klimat javowy, może jakiś inny "styl" który bardziej podejdzie. Jeśli java to z tego co widze tylko aplikacje webowe. Możnaby też atakować androida, ale czy mi to podchodzi to jeszcze nie sprawdzałem. Pod kątem pracy, pewnie ofert jest mniej dla androidowca.

Nie chodzi o to, że mi nie idzie i się poddaje. Póki co wszystko idzie do przodu, ale nie jestem pewien czy trafiłem w to co powinienem :)
A może jave enterprise trzeba przegryźć, a potem staje się milsza?

Bądźcie wyrozumiali dla mnie i pozdrawiam!

0

scala i play framework ? groovy ?

0

ruby on rails

0

Android, Ruby (Rails), Python - zobacz, popróbuj i zostań w tym co cię kręci

0

Myślałem o Pythonie. Przeglądając internet często widziałem, że język łatwy składniowo, ciekawy i sprytny.

  1. Jednak nie bardzo wiem - jakie aplikacje w Pythonie się pisze zazwyczaj?

  2. Ruby on rails to framework MVC do tworzenia aplikacji? czyli jak java enterprise tylko troche inaczej?:)

  3. Może trochę nie ten dział, ale jak się natrafi jakiś deweloper javy to pytanie: co z javą? może to idzie przegryźć i potem wpada w gusta?

  4. Co sądzicie o web deweloperce? tj: HTML5 CSS3 jQuery, czysty JavaScript, PHP?

dzięki za odpowiedzi liczę na więcej!

0

Rails (Ruby on Rails) jest frameworkiem Ruby służącym właśnie do "web developerki". Jest mocno oparty na MVC i coraz bardziej popularny (szczególnie na zachodzie podobno).
Jak ciągnie cię do web dev i "sprytnych, estetycznych" jezyków to RoR powinno ci się spodobac.

0

@niezdecydowany
Nie mogę napisać komentarza, to napisze tutaj :) właśnie po to jest ten temat, żebym się nie męczył z czymś co MOŻE (choć jeszcze nie powiedziane dokładnie) mi nie leżeć :)

Nie potrafię się też sprecyzować co do stylu w jakim chce pisać (aplikacje: mobilne, webowe, desktopowe itd.) Generalnie lubie programowanie, różne, czasem mam pomysł na coś mobilnego, czasem coś do sieci, czasem coś na PC. Miesza się to i miesza, ale losowo wybrałem jave juz jakis czas temu i w te strone ide. Teraz myśle, że może coś innego oryginalnego, a może dalej java, a na boku jakiś python, może jak mówicie Ruby on Rails, albo combo pod tytułem C++ C#? :)

ahh brak możliwośći edycji :D
chciałem dopisać, że gdybym tak miał w każdym języku troszke posiedzieć, żeby sprawdzić czy mi odpowiada to zajęłoby mi to trochę czasu, zakładając, że poznać to nie znaczy zrobić print na konsole, tylko coś tam skubnąć więcej :)

generalnie myślałem o siedzeniu w aplikacjach desktopowych, ale z tego co zauważam teraz powoli wszystko zmierza ku wrzuceniu wszystkich programów do internetu: w chmure, jako aplikacja, strona internetowa itd. dlatego pewnie jeśli desktop to raczej gry itd.

0

Z tym, że RoR z tego co dobrze rozumiem, to tylko web deweloperka? A coś w innym kierunku? Czy aktualnie już się nie opłaca nic innego niż web? :)
I RoR opiera się na Ruby - więc w razie czego od niego należy zacząć?

Co do Pythona - co sądzicie? Jakie aplikacje najczęściej się w nim pisze? (Wiem, że wszystko można, ale w javie np przyjęło się jako ten "standard" cały świat webówki, o to samo chodzi w pythonie)

0

Sam musisz wypróbować, skąd mamy wiedzieć w czym się bedziesz dobrze czuł... Nie patrz na to co się "aktualnie opłaca" (opłaca się być dobrym programistą), tylko zajaraj się jakąś technologią. Poczytaj w sieci o językach które Cie interesują, zrób jakieś tutoriale. Potem pogłębiaj wiedzę. Jeśli nic Cie nie zajara... to otwórz warzywniak ;)

0

Ja tylko dorzucę, że jeśli kodzisz w Javie to mocno polecam skorzystanie z IntelliJ IDEA. Niestety wersja Ultimate, która ma wsparcie dla Javy EE, jest płatna, ale już np do Androida nic płacić nie trzeba. Z IntelliJem poczujesz jak wygląda efektywna refaktoryzacja i nawigacja po kodzie Javowym :) Możesz np zacząć od wersji Community, oswoić się z IntelliJem, a potem wypróbować triala na projekcie z JavyEE.

0

@somekid
Generalnie posiadam tu konto, ale połowicznie mam do niego dostęp póki co :)
@bolson
Dlatego właśnie ten temat, myśle w co tu wejść i chyba wybiore Pythona, nie wiem dlaczego ale cały dzień mialem rozterke na temat Ruby vs python i wypadło na pythona, czemu? nie wiem :)
Co możecie powiedzieć o tym języku?

@Wibowit
używam właśnie Intellij :) Co do samej javy - trochę już niej tak amatorsko kodze i bardzo się do niej przyzwyczaiłem, może nawet za bardzo. Nie mniej jednak na pewno nie jest to rozwiązanie, kiedy chcemy coś szybko napisać bo mamy inwencje twórczą. Żeby coś wartościowo pisać trzeba poznać sporo zagadnień z różnych frameworków, co na prawdę zajmuje trochę czasu. Z tego co słyszałem na dłuższą metę jest ona bardzo sprawnym rozwiązaniem - dlatego pisze się w niej aplikacje biznesowe. Popraw mnie @Wibowit jeśli się mylę.

Czy w innych językach tj. właśnie python czy ruby tez potrzeba dużo dużo czasu na ogarnięcie tej wiedzy podstawowej?

Wibowit w czym kodzisz akutalnie? (pierwszy stopień do piekła.. :))

0

Wszystko zależy od tego jakich tych frameworków używasz. Zamiast JavyEE do małych projekcików możesz używać małych frameworków, np taką skrajność jak: http://www.sparkjava.com/

Natomiast u mnie normalną tendencją w robocie jest to, że jak robię nowe narzędzie to robię to tak, że najpierw metodą Kopiego-Pejsta startuję nowy projekt, a potem refaktoryzuję ;]

W czym piszę? Generalnie jestem z zawodu Javowcem, ale ostatnio w robocie muszę dużo klepać w Pythonie, czego bardzo nie lubię (nie lubię dynamicznie typowanych języków, gdyż IntelliJ się w takich łatwo gub, a ja razem z nimi; mam kiepską pamięć krótkotrwałą i zanim zapamiętam zależności między klasami/ metodami/ etc to trochę mija; dla mnie to bezcelowe i antyproduktywne, tzn pisanie w języku kaczo typowanym). Hobbystycznie ostatnio pisuję głównie w czystym C, bo zajmuję się algorytmami kompresji (chyba nie trzeba tłumaczyć czemu C jest popularne wśród osób zajmujących się tym tematem :P ) oraz powróciłem do Scali w końcu i w niej zamierzam się rozwijać (+ OpenCL, którego potrzebuję by zrealizować własny projekt).

Stronki można pisać różnie i z użyciem różnych frameworków. Np GWT (tudzież Vaadin na nim oparty) który tłumaczy Javę na JavaScript, Apache Wicket który implementuje dziedziczenie HTMLa podobnego do dziedziczenia klas (tzn jest nawet mapowanie 1:1 między plikami Java, a HTML), Spring MVC (nie używałem), Play Framework (oparty o język Scala, ale także z Javowym API), itd Możesz też olać generowanie frontendu po stronie serwera i przejść na REST (lub coś podobnego) + interfejs we frameworku JavaScriptowym - to podobno świeży i przyszłościowy trend. Moim zdaniem podejście z mikroserwisami wystawiającymi API na RESTa oraz aplikacja JavaScriptowa po stronie klienta to bardzo ciekawe rozwiązanie i warto się tym zainteresować. Zwłaszcza, że jeśli przeniesie się generowanie frontendu całkowicie na klienta, to wtedy jest dużo większa elastyczność - w sensie, że jak chcemy zmienić frontend to nie trzeba w ogóle ruszać mikroserwisów, podobnie jeśli chcemy mieć wiele frontendów to też nie trzeba w ogóle ruszać backednu, itd Frontend i backend mogą ewoluować oddzielnie w takim modelu.

Jest pewne parcie w firmie na HTML5 i z tego co się orientuje to jest to właśnie mniej więcej frontend w ExtJS, a backend na RESTowym API. Chcą tym zastąpić Javowe stacjonarne GUI. Moim zdaniem to ma średnie szanse powodzenia. Np jedna zakładka Facebooka może spokojnie zjeść setki megabajtów. Jakoś wątpię, by intefejs webowy w przypadku biznesowej krowy był cokolwiek lżejszy i szybszy od dobrze zaprojektowanego interfejsu stacjonarnego. Chodzi mi przede wszystkim o przypadki w których trzeba operować na bardzo dużych tabelach - przeglądarki webowe w takich przypadkach wymiękają.

0
Wibowit napisał(a):

Jakoś wątpię, by intefejs webowy w przypadku biznesowej krowy był cokolwiek lżejszy i szybszy od dobrze zaprojektowanego interfejsu stacjonarnego. Chodzi mi przede wszystkim o przypadki w których trzeba operować na bardzo dużych tabelach - przeglądarki webowe w takich przypadkach wymiękają.

O ile ktoś nie wciąga całej tabeli ze wszystkimi powiązaniami na raz i nie próbuje tego wepchnąć do jakiegoś słitaśnego javascriptowego MVVM z miliardem eventów, to nie będzie tragedii.
A web się za to łatwo wdraża, i nie wymaga oddzielnych wersji np. na PC, Androida i iPada.

0

@Wibowit
Skoro dużo refaktoryzujesz to fakt, IntelliJ to dar z niebios :) Miejmy nadzieje, że mi Python podpadnie do gustu. Co do typowania Java różni się mocno od Pythona, całkiem różna sprawa, więc ciekawe jak to będzie.
Osobiście, jak pisałem, piszę w JSF, ale wiem, że czystym JSF magii javy nie odkryje, bo potrzeba mi jeszcze technologii dypu CDI, jakiś Hibernate, EJB, pewnie i Spring. Wiem, że do poznania jest bardzo dużo jeszcze zanim będę w stanie napisać coś, co można umieścić w portfolio na przyszłość. Ciężki orzech do zgryzienia :) ale keep going, grunt, że są chęci poznawcze

Co do podejścia REST - prawdę mówiąc nie dokładnie wiem co to znaczy wystawić REST na serwerze. Nie zagłębiałem się w to bo uznałem, że bez ogólnej, ponadpodstawowej wiedzy z zakresu JEE nie mam tam czego szukać. Jednakże rozumiem to tak, że programista na serwerze umieszcza cały backend aplikacji i daje możliwość dostępu do niego za pomocą jezyków tj. JavaScript. Wtedy frontend jest po stronie wyłącznie klienta i można modelować go jak nam się podoba, a wyniki otrzymywać z REST'a (czyli backendu)
Popraw mnie jeśli się mylę

P.S
Chyba ja mam coś nie po kolei w głowie, czyli jednak da się pracować jako developer Javy @Wibowit nie mając zbyt dużego kontaktu ze Springiem? :D

0

No z tym RESTem to mocno upraszczając może być tak:

Serwer udostępnia URLe typu:

  • /service/getOrders?itemId=50&dateStart=20120101 zwracający JSONa
  • /static/* - zawierający statyczne pliki .JS, .HTML, .CSS i tym podobne

Użytkownik wchodzi na stronę, ściąga HTMLa, który jedyne co robi to ładuje kolejne pliki .JS ze ścieżki /static/*. Skrypty JavaScript po załadowaniu uderzają do serwisów używając np takiego URLa jak podałem, następnie wczytują JSONa i na jego podstawie generują np tabelkę, wypełniają formularz, podmieniają zdjęcia, itd

W takim modelu możesz względnie bezproblemowo mieszać (w sensie używać wielu) języki po stronie backendu. Możesz też mieć kilka różnych frontendów. Jedyne co jest stałe to API, czyli format URLi do serwisów (a także danych pchanych POSTem), składnia zwracanych JSONów oraz ciasteczka.

O ile ktoś nie wciąga całej tabeli ze wszystkimi powiązaniami na raz i nie próbuje tego wepchnąć do jakiegoś słitaśnego javascriptowego MVVM z miliardem eventów, to nie będzie tragedii.
A web się za to łatwo wdraża, i nie wymaga oddzielnych wersji np. na PC, Androida i iPada.

No właśnie zależy jak się używa tych tabelek. Obecnie w stacjonarnym GUI jest tak, że się np ładuje tabelkę z ilością wierszy rzędu 100 tys i kilkunastoma kolumnami, a następnie przez cały dzień się na tej tabeli operuje.

Załadowanie tak dużej tabeli do przeglądarki to ryzyko wybuchu. Z drugiej strony dynamiczne ładowanie tylko widocznych fragmentów tabeli będzie oznaczało laga związanego z ciągłymi zapytaniami oraz większe skomplikowanie logiki. (tak mi się przynajmniej wydaje)

0

@Wibowit
Jeśli miałbym być szczery to póki co mało rozumiem :P Wyobrażam to sobie mniej więcej, ale musiałbym spróbować implementacji tego, żeby tak na prawdę wiedzieć ocb. Ale generalnie wstępne założenia miałem dobre - jest logika, a frontend robimy jak chcemy i ile chcemy :P
Aktualnie jak mówiłem pisze example w JSF, za kilka dni lub nawet jutro chce wziąc się za PrimeFaces bo mi sie podoba. Potem mam pare pomysłow na projekty, a dalej kompletnie nie wiem co, Spring IoC, DI? Ale jak, skoro JSF ma bazować na CDI a mieszanie tego to, z tego co wiem, raczej mało ciekawa sprawa. Także co dalej nie wiem, jakieś rady? ;p

0

@niezdecydowany
Właśnie najgorsze jest to, że w ogłoszeniach pisza: J2EE Technologies, albo też: Spring Framework. Do tego wymieniaja 5 bilbiotek JS, jakis tam HTML CSS i pare frameworków MVC do javy. Więc mało to pomaga :D Szczerze powiedziawszy bardzo mnie ciekawi jak pisze się w Spring MVC - jednak tak myśle, skoro poznałem JSF to czy warto znów poznawać kolejny framework MVC? Nie lepiej coś do backendu już?

I teraz zastanawiam się co po tym JSF tak powiem szczerze :P Pythona wybrałem jako język dodatkowo na odejście na chwile do innego świata kodowego, tylko co dalej z Javą? ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1