ASP.NET vs JAVA EE, SPRING MVC

1

Witam, zacząłem bawić się bardziej skomplikowanymi tematami jak tworzenie serwisów webowych w Javie. Niestety podczas nauki pojawił się u mnie szereg wątpliwości z Java i myśli, czy nie przenieść się jednak na C#. Po pierwsze mało jest materiałów dla początkujących jak robić to step by step razem z konfiguracją środowiska w innych ide niż eclipse(który jest ohydny - nie rozumiem, czemu Intellij nie jest standardem). Po drugie jest to też podobno dużo prostsz w asp.net. W Javie mamy miliard frameworków jak spring mvc, hibernate, a dodatkowo jest jeszcze java ee. Jako samouk nie wiem teraz czego w sumie sie uczyć. Java ee, Spring?

Zainestoswałem już trochę czasu w naukę javy, przeczytałem trochę książek. Aktualnie jestem w martwym punkcie, bo nie wiem w którym kierunku się rozwijać i co może mi się przydać do pracy.

Będąć na różnych testach w ramach starania się o staż zauważyłem jak dużo osób programuje w C#, powiem szczerze Javowcy byli mniejszością. No dobra, ale to może dlatego, że łatwiej po prostu opanować tego .neta? Może nauka Javy i tego co z nią związane jest bardziej opłacalna jeśli chodzi o $$$, bo mniejsza konkurencja w tym będzie.

0

Według mnie jest więcej Javowców spójrz chociaż na ilość konferencji organizowanych w Polsce wokół JAVA/JVM.
Jeśli chodzi o przyszłość to ja stawiam na JavaScript :-).
Rzeczywiście w .NET jest mniejszy wybór i co za tym idzie mniej do nauki. Wyszukaj sobie oferty pracy w swoim mieście dla Java vs C# i zdecyduj np na tej podstawie

1

Prawdę mówiąc jak dobrze znasz 1 to bardzo szybko przestawisz się na drugie. Większy problem to aby bardzo dobrze nauczyć się programować w Javie lub .NET. Potem przerzucenie nie powinno stanowić wielkiego problemu. JavaScript i tak warto się uczyć. Zajmij się tym w czym znajdziesz pierwszą pracę. Osobiście jestem za Java (jeśli nie znajdziesz pracy w .NET), bo:

  • większa różnorodność / większy wybór
  • jak nauczysz się poruszać w tej różnorodności to douczenie się .NET nie będzie się różniło od kolejnego frameworka javo'wego

Co do Java EE lub Spring, weź to co koledzy, aby było kogo zapytać. Chyba że masz znajomych co programują w .NET.

1

Wybierz co lubisz.

Ale piszac, ze malo jest tutoriali w java to chyba sobie jaja robisz.

0
margor90 napisał(a):

Prawdę mówiąc jak dobrze znasz 1 to bardzo szybko przestawisz się na drugie. Większy problem to aby bardzo dobrze nauczyć się programować w Javie lub .NET. Potem przerzucenie nie powinno stanowić wielkiego problemu. JavaScript i tak warto się uczyć. Zajmij się tym w czym znajdziesz pierwszą pracę. Osobiście jestem za Java (jeśli nie znajdziesz pracy w .NET), bo:

  • większa różnorodność / większy wybór
  • jak nauczysz się poruszać w tej różnorodności to douczenie się .NET nie będzie się różniło od kolejnego frameworka javo'wego

Co do Java EE lub Spring, weź to co koledzy, aby było kogo zapytać. Chyba że masz znajomych co programują w .NET.

Jakie materiały polecisz do nauki jednego i drugiego?

0

Jak .NET to na początek oficjalne tutoriale ze strony asp.net.

Jak piszesz w Javie naucz się Mavena. To podstawa.

Jak JEE to zainstaluj: NetBeans, Payara 4.1 (GlassFish). Zacznij od otrzaskania się z PrimeFaces i JSF:
http://www.primefaces.org/showcase/index.xhtml

Zbuduj jakiś prosty CRUD. Do bazy użyj JPA 2 (tego naucz się w drugiej kolejności). Przy okazji łykniesz podstawy EJB. Na początku nie twórz enterprise application (EAR), wystarczy Ci web application (WAR).

Jak Spring to pewnie to samo, tyle że formularz w Spring MVC i jQuery UI. Konfiguracja będzie trochę inna. Możesz szukać czegoś do Spring Boot: mniej roboty z konfiguracją i powinno być równie prosto jak w JEE.

0

Prawie nikt nie robi juz czystego JEE raczej jest to mix ze Springiem.

Zamiast mavena polecilbym gradle.
Nie wiem czemu ma brac netbeansa a nie jakiekolwiek IDE mu sie podoba.
Nie wiem czemu niby to konieczne by bawic sie z Primefaces czy JSF.

Polecilbym Spring boot i gradle.

0
Krwawy Terrorysta napisał(a):

Prawie nikt nie robi juz czystego JEE raczej jest to mix ze Springiem.

Zamiast mavena polecilbym gradle.
Nie wiem czemu ma brac netbeansa a nie jakiekolwiek IDE mu sie podoba.
Nie wiem czemu niby to konieczne by bawic sie z Primefaces czy JSF.

Polecilbym Spring boot i gradle.

Osobiście preferuję Intellij. Najlepsze IDE do Javy moim zdaniem. Mam nadzieję, że w pracy nie zmuszają nikogo do konkretnego IDE? Bo po prostu nie cierpię Eclipsa ani NetBeans.

Jak jest aktualnie z opłacalnością tych technologii? W czym można więcej zarobić? asp.net czy java ee? Czytałem, że podobno utrzymanie systemu w asp.net jest dużo droższe niż w Javie.

1

Ja polecam JEE 7 na Payara na początek bo:

  • jest mniejsze
  • jest banalnie proste: mniej adnotacji
  • nie trzeba konfigurować: standardowe GUI to JSF
  • Payara jest prosta i ma fajną konsolę (nie jakieś ciężkie WebLogic czy WebSphere)

Polecam też Spring Boot:

  • podobnie jak JEE to gotowe konfiguracje: na podstawie classpath automat konfiguruje springa, uwaga na śmieci w pom.xml / gradle
  • upraszcza życie przez brak serwera aplikacyjnego: prostsze paczkowanie
    Wady:
  • trzeba widzieć jakie konfiguracje chce, nie wiem czy to takie fajne dla początkujących

Jak dla mnie nie ma znaczenia czy wybierze Gradle czy Mavena. Zastanawia mnie co takiego dobrego ma Gradle. Kiedyś Maven lepiej integrował się z CI.

0

@margor90
No chyba tam gdzie siedzi 'bardzo ciekawa utrzymaniowka' .
Według mnie dużo trudniej spotkac pojekt bez springa.
Gradle potrafi akurat duzo wiecej niz maven i jest duzo czytelniejszy. I to cos wiecej niz build tool.

@kolo625
Nikt raczej nikogo nie zmusza do uzywania danego IDE.

0

Olej JEE
Trzeba sie pie z jakimiś gównami, serwerami to wszystko jest popie
Naucz się Springa, jest to łatwy framework bardzo logiczny i generalnie jest bardzo logiczny
JEE to przerost formy nad treścią

0

"Netbeans lepiej integruje sie z glasfishem'
tez mi zaleta gdy glassfish to kupa...

Nie mam nic do Netbeansa, ale jestem za tym by kazdy uzywal co mu sie podoba.

0

Tak, czytam. Dużo różnych konfiguracji pojawia się z Java. Jak właśnie spring, maven, hibernate itd. Czy brak tego w .net wynika z tego, że nie jest to jeszcze tak dojrzała platforma jak java?

0

Brak tego w .Net oznacza, że to terminy związane z Javą...

Spring -> ASP.NET MVC
Hibernate -> NHibernate
Maven -> Nuget(tutaj chyba tak nie do końca)

0

Intellij ma community edition, ktore starcza w wielu przypadkach. Kupic tez mozesz sam dla siebie i uzywac. Jak jakas firma zabrania uzywania czegos tam to jest to glupia firma.

http://gradle.org/maven_vs_gradle/
w gradle np. przyjemnie piszę się taski, które można łatwo wywoływać

Utrzymaniówka jest potrzebna, ale na pewno nie jest porywająca...

0

Spring to takie same g**no, tylko bardzej złożone w konfiguracji.

Powiedziałbym, że dokładnie na odwrót.

0

Ja nie miałem żadnych problemów z konfiguracją.
Skonfigurowanie aplikacji typu REST MVC + Hibernate + Spring Security to pól godziny

Oto konfiguracja ORM:

 
<tx:annotation-driven transaction-manager="txManager"/>
<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="org.postgresql.Driver" />
		<property name="url"
			value="jdbc:postgresql://localhost/expenses_manager" />
		<property name="username" value="..." />
		<property name="password" value="..." />
	</bean>

      <bean id="sessionFactory"
		class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
		<property name="packagesToScan" value="pl.sciborek.expensesmanager.data.entity" />
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
				<prop key="hibernate.show_sql">false</prop>
			</props>
		</property>
	</bean>

     <bean id="txManager"
		class="org.springframework.orm.hibernate5.HibernateTransactionManager">
		<property name="sessionFactory" ref="sessionFactory" />
	</bean>

No i później na serwisach adnotacje

@Transactional(propagation = Propagation.REQUIRED)
@Transactional(readOnly = true)
 

No skomplikowane chu...

0

A sam gdzie podajesz te argumenty za technologia X ?
Bo póki co to ja też na Ciebie patrzę widząc kogoś kto wykrzykuje "moja piaskownica jest najmojsza"
Gdzie argumenty za Glassfishem? Netbeansem ? JEE?

Glassfisha nie wspominam zbyt miło i rzadko spotykam by ktoś go polecał.
Spring ma np. Spring Data co mocno umila życie.
Według mnie jedna z najszybszych dróg by wystartować to spring boot + gradle używając java configs i plików properties.

0

@margor90
ale ja tego nie powiedzialem, ze JEE jest fe i złe. Bo jak mam Springa w projekcie to mam sporo rzeczy bardziej JEE niż Spring. Tyle, że wybieram sobie co mi pasuje. np. RestTemplate i Spring Controllers raczej nie używam.

Polecam Springa głównie dlatego, że według mnie jest dużo bardziej popularny i łatwiej trafić na młodszy projekt. Ja z ofert JEE jakie dostaje to są to jakies rzeczy, żebym siedział w JSP... zazwyczaj. Dokumentacja Springa też jest bardzo spoko i mnóstwo tutoriali i rozwiazań po sieci.

1

Dla mnie JEE + Payara jest podobnie jak Spring Boot środowiskiem, w którym niewiele musisz konfigurować, a możesz bardzo szybko zacząć pisać aplikacje. W przeciwieństwie do klasycznego Springa, gdzie trzeba było poświęcić czas na stworzenie konfiguracji aplikacji (którą można potem powielać i dopiero wtedy będzie szybko).

Zalety:

  • Payara co pół roku ma wydania z bugfixami i nowymi opcjami: wsparcie dla najnowszego standardu
  • Payara / GlassFish to serwery tworzone z myślą o klastrowaniu: duże systemy (ok, dobra wiem że Tomcat też się klastruje)
  • techniczny argument jest taki, że JEE na dużych projektach wspiera pule obiektów out-of-box i nie trzeba nic konfigurować (wydajność), jak się uczymy nie ma to znaczenia i kryterium jest jak łatwo wystartować aby zacząć pisać działające aplikacje
  • w Springu na początku może zniechęcać mnogość opcji, dla mnie to zaleta, ale na początku nie wiadomo za co się zabrać
0

Dlatego ja propsuję Spring Boota nad zwykłego Springa, mimo, że dalej znajdzie się mnóstwo osób, którzy podchodzą do tego jak pies do jeża.
Ja uważam, że idea "convention over configuration" to jest to.

Ale myśle, że skonfigurować zwykłego Springa 4 też nie jest tak trudno. Mimo to wolę rzeczy dostać z paczki Spring Boota i nadpisywać co potrzebuję.

4

Witam pracuje 3 lata w firmie zajmując się java webową więc się wypowiem, może coś pomogę.
Kolega w wcześniejszym poście pisał, aby olać Jave EE i zająć się springiem, nie wiem czy tak się da, pisząc w springu często też będziemy pisać w JEE. i Myślę ze dobrze jest wyjść z JEE, przed Springiem.
Jeśli chodzi o oferty pracy, zarówno w .net jak i javie jest jej sporo, więc tutaj możemy raczej rozpatrywać tylko kwestię, która technologia bardziej się nam podoba.
Środowiska programistyczne: w firmach (tez w mojej), może być nacisk na darmowe narzędzia, więc do wyboru w zasadzie mamy NetBeansa i Eclipsa, ale gdy dobrze skonfigurujemy te środowiska to wg. mnie można bezproblemowo na nich pracować.
Pojawiła się kwestia serwera, że glassfish jest bee, moim zdaniem nie jest zły na start, łatwy w konfiguracji i ogólnie do nauki spoko na pierwsze apki. Ale jeśli chodzi o firmy nie słyszałem żeby w nich był używany, tutaj raczej bym stawiał na WildFly.
Podsumowując: jako programista Java powiem co wg. mnie teraz opłaca się w Javie, czyli czego warto się nauczyć (opinia wyciągnięta na podstawie firmy w której pracuje i wyrobiona na podstawie informacji od kolegów z innych firm): Spring (mocne podstawy JEE zalecane) + Angular (tutaj fajnie mieć sporą wiedze z samego JavaScript) + Serwer WildFly, lub do prostych apek Tomcat + Maven (warto znać, firmy się przyzwyczaiły i używają), przydatna w pracy jest także znajomość CSS i HTML mimo że nie planujemy być grafikami i projektantami interfejsów no i znajomość baz danych i SQL. Do pracy jako java web developer te rzeczy się przydadzą.

2

GlsassFish jest używany. Po prostu WebLogic / WebSphere / JBoss to często masa nadmiarowego middleware typu ESB: platforma integrująca komercyjny soft, przy okazji serwer JEE. Poza tym na GlassFishu stoją systemy logistyczne znanej firmy w branży lotniczej. Oraz np. takie iTac software AG dostarczającego softu MES używa GlassFisha (chyba teraz Payara).

0

Przeraża mnie ilość rzeczy, których trzeba się nauczyć. Czy w .NET jest tego znacznie mniej, czy to tylko pozory? Chłopaki ja jestem samoukiem i tym bardziej zastanawiam się na jakim poziomie będą wymagać ode mnie tej wiedzy jakbym uderzył np: na juniora.

3
kolo625 napisał(a):

Przeraża mnie ilość rzeczy, których trzeba się nauczyć. Czy w .NET jest tego znacznie mniej, czy to tylko pozory?

Nie musisz umieć wszystkiego. Traktuj to jak stół szwedzki, wybierasz co potrzebujesz / lepiej pasuje do projektu. Dlatego na początku pisałem weź to co koledzy. Jak zrozumiesz wzorce to będziesz w stanie pracować z każdą z trzech wymienionych technologii. To może potrwać ze 3 lata. Każda z wymienionych technologii jest good enough.

2
kolo625 napisał(a):

Przeraża mnie ilość rzeczy, których trzeba się nauczyć. Czy w .NET jest tego znacznie mniej, czy to tylko pozory?

Mogę Cie pocieszyć, zgodzę się z poprzednikiem, nie musisz umieć tego wszystkiego od razu. To co napisałem we wcześniejszym poście, to technologie które używam na co dzień i wiem, że są używane także w wielu innych firmach. Tak na prawdę to wszystko zależy od konkretnej firmy, jakie ma wymagania co do pracownika. Z reguły jest tak że na stanowisku juniora wystarczy tylko mniej więcej się orientować w technologiach, a szerzej nauczysz się już wszystkiego w pracy. Ze mną także pracują osoby początkujące które maja mniejszą wiedzę - jeśli czegoś nie umie zapyta i zapamięta. Więc nie ma czego się bać tylko iść do pracy, po prostu na początek mniej Ci zapłacą, a Ty w firmie już nauczysz się reszty.

1
kolo625 napisał(a):

Przeraża mnie ilość rzeczy, których trzeba się nauczyć. Czy w .NET jest tego znacznie mniej, czy to tylko pozory? Chłopaki ja jestem samoukiem i tym bardziej zastanawiam się na jakim poziomie będą wymagać ode mnie tej wiedzy jakbym uderzył np: na juniora.

Spokojnie, ja poszedłem pół roku temu do pracy, znając Androida i Java SE, a po pół roku dosyć dobrze odnajduje się w technologiach takich jak: Angular, JBoss (czyli stara nazwa WildFly), Maven, Java EE, SQL, PL/SQL. A uważam się za przeciętnie zdolnego programistę. Po prostu rzucali mnie gdzie się da i trzeba się było nauczyć.

0
margor90 napisał(a):

Dla mnie JEE + Payara

A czy możesz zapodać jakiegoś githuba, przykładowego cruda by zobaczyć jak to wygląda?

0

@zeneks tylko eclipse wywala się na mavenie :)

0

SpringBoot o Mikroserwisy.
Czy faktycznie takie dobre rozwiazanie?
Jakie jest Wasze doswiadczenie?
Czy nie lepiej uzyc jakiejs payary, wildfly itp? Oraz dockery?

Spring wydaje mi sie bardziej zasobozerny.

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