Kezdőoldal » Számítástechnika » Programozás » Ha junior java programozó...

Ha junior java programozó szeretnék lenni, akkor milyen technológiákat kell még elsajátítsak?

Figyelt kérdés

Amiket tudok jelenleg az a Java8, mysql, Java-fx, CSS, HTML, Spring Boot, jdbc, beanek.


Még miket kellene feltétlenül megtanulnom?


2020. okt. 26. 04:11
1 2
 1/11 anonim ***** válasza:
100%
Hibernate
2020. okt. 26. 07:27
Hasznos számodra ez a válasz?
 2/11 anonim ***** válasza:

Hát mondhatnék neked sokmindent. :D A cégek legtöbbsége WEB-re fejleszt és a Java mint szerver alkalmazás lesz jelen.


- Hibernate javaslom, ha RMDBS alapú adatbázissal akarsz foglalkozni. Így JDBC-vel se nagyon fogsz találkozni, mert a Hibernate megoldja.

- JPA fog kelleni, ha NoSQL bejön a pakliba. De ehhez nyilván a Spring nagy segítséget tud nyújtani, ha Cassandra, Redis, MongoDB-vel kellene foglalkozni

- Spring Boot-ban, az lényegében egy kollekció. Spring mely moduljaira gondolsz?

- Bean-ek? Ez most a JavaEE-sre gondolsz? Vagy a Spring DI-s dolgokra? Ha utóbbi, akkor Springben tanultad, így nincs jelentősége a listában.

- HTML, CSS kevés lesz, ha fullstack-ben gondolkozol. Kell Angular vagy NuxtJS/VueJS. Azaz JavaScript!


Nagy vállalatoknál azért valamilyen MQ javaslot ismerni. Én a Kafka-t javaslom, de van olyan még, hogy RabbitMQ vagy ActiveMQ. Ahogy én veszem ki a Kafka és a RabbitMQ a legnépszerűbb. (Igaz, más is a megközelítésük.)

Javaslom még a NoSQL-be is beleásni. a Fent említett 3 adatbázis rendszert megtanulni, mert azért más-másra jó.

Plusz egy kis érdekesség: [link]


Nyilván, ha fentieket ismered az már egy medior szint és interjún is nagyon jó. Az MQ nem kötelező, és a DB-k nem ismerete sem hátrány. De jó pont, ha hallottál már róluk.

2020. okt. 26. 14:52
Hasznos számodra ez a válasz?
 3/11 anonim ***** válasza:
Utolsó, ez azért elég sok minden főleg egy belépő szinthez. Ennek tényleg kell mindnek a mély ismerete?
2020. okt. 26. 14:58
Hasznos számodra ez a válasz?
 4/11 anonim ***** válasza:

#2 vagyok. #3-ra válaszolok.


Hát.. Attól függ, hogy miket kell használni. De igen, ellehet vadítani, ha olyan a környezet. Terhelés elosztás, microservice rendszerek, JWT hitelesítés és sorolhatnám.


Én most egy házi projektet csinálok. Ha érdekel ezek vannak benne. Viszonyítás alapnak:

- Spring Boot (MVC, Security, JPA Cassandra, JPA Redis, Email, AOP)

- Thymeleaf template rendszer, hogy HTML alapúak legyen az emailek.

- Angular 10

- JWT Security authentication (Stateless megoldás, azaz nincs session)

- Kafka (még tervben, hogy bekötöm)

- Nginx a loadbalance miatt.


Adatbázis:

- Cassnadra klaszterizáció

- Redis klaszterizáció

- Elasticsearch (tervben, főleg logok számára és statisztikákra)


Angular cuccok:

- Ngrx (Store, Data)

- Angular material

- ngx-translate

- saját library-k


Deploy:

- Docker környezet

- Ezt Kubernetes vezérel

- Azure felhőben, mint egy SaaS alkalmazás

2020. okt. 26. 15:15
Hasznos számodra ez a válasz?
 5/11 anonim ***** válasza:
100%

Kedes 4-es, és mindez amit csinálsz egy junior szint alja?


üdv :)

2020. okt. 26. 15:18
Hasznos számodra ez a válasz?
 6/11 anonim ***** válasza:

:D Nem ez már Medior/Senior szint.


Juniornak nem feltétlen kell ismernie:

- Elasticsearch

- Deploy megoldásokat (Ezt általában a DevOps csapat vagy CI csinálja commit után)

- JWT, is csak egy eszköz, nem kötelező használni.

- Nginx, kvázi 1 nap alatt megtanulod ami érdekel. Java-s nem feltétlen Nginxezik, inkább DevOps-osok játék tere, mikor Deployba ér a fázis.

- MQ rendszereket, mert ahhoz már kell lennie egy microservice alapnak, hogy belelássa, hol jöhet jól egy MQ.

- NoSQL sem feltétlen muszály, de jó ha van. SQL-es rendszerek után (MySQL, Oracle, MSSQL, ...) után kicsit életidegen tud lenni a NoSQL féle tér. Azért mondom, jó tudni, mert látóteret növel.


Pl.: Redis memóriában tárol (nem ír diskre) és kulcs-érték alapján tárol, amitől kis adatokra nagyon gyors. Emiatt jó cachere is.

Cassandra egy oriási adathalmazban O(1) művelettel (azaz 1 művelettel) megtalálja az adatot, legyen mármennyi sorod. Persze működéséből fakadóan nincs JOIN, mint egy RMDBS-ben. Egy több-a-többhöz kapcsolatot Cassandrában 4 tábla kell. Két tábla amiben adatot tárolsz és másik kettő amibel ide-oda linkelsz. Nyilván neked kell ezt karbantartani.


Mindegyik DB-nek meg van az előnye-hátránya. Önskálázódó, több adatközpontú infrastruktúrára RMDBS-t nem használnék. Helybenfutó rendszerre, pl. egy gyáron belül, azért meggondolnám, hogy MySQL, PostgreSQL vagy Oracle-t húznék fel.


Ez a eltudod dönteni mi a legideálisabb hova, ha több mindent tudsz előnye. :)

2020. okt. 26. 15:58
Hasznos számodra ez a válasz?
 7/11 A kérdező kommentje:
A beanek alatt a konstruktor/adattag/setter alapú DI-ra gondoltam. Java-ban ugye ilyenkor a @Bean annotacio kell. Ez melyik a kettő közül? :D
2020. okt. 27. 06:28
 8/11 anonim ***** válasza:

Az nem Java Bean. Az Spring téma. Nézd meg honnan importálod az annotációt. :3

Klasszikus Java Bean az JavaEE-ben van.


Ha már Spring. A @Component, @Service, @Controller, @RestController, @Repository ezek mind DI Singletonok lesznek, mint ha @Bean-el definiáltad volna. Persze egyes általam említett annotációknak is saját feladata is van, mint pl. a @RestController. IntelliJ-ben ctrl és ráklikkelsz, akkor megtudod nézni mit hoz még magával.


@Controller + @ResponseBody => @RestController

2020. okt. 27. 07:34
Hasznos számodra ez a válasz?
 9/11 A kérdező kommentje:
És a java-re-ben mik vannak akkor? :o
2020. okt. 27. 11:59
 10/11 anonim ***** válasza:

pl.:

[link]

[link]


De lényegtelen. Spring projektben használhatóak a JavaEE-sek is, ha ugyanat a célja.

pl.: egy controller nálam


import javax.validation.Valid; // <- ez nem Spring, ami a POST body-ját validálja

import org.springframework.lang.NonNull;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestBody;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseStatus;

import org.springframework.web.bind.annotation.RestController;


Egy másik. Itt használok Lombok-ot is. pl.: @Data. Szeretem, mert kiváltja a rengeteg getter/setter-t. Ofc.. Kell hozzá plugin IntelliJ alatt, különben tele leszel errorral. :)

[link]


// Jackson-nak ismerősnek kell lennie, ha Spring. (JSON <--> Object)

// Szóval ez csak egy JSON adatmodel felett lévő import pack

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import com.intemse.echef.http.models.commons.CaptchaModel;

import com.intemse.echef.validation.NotBusyAccountEmail;

import com.intemse.echef.validation.NotBusyAccountUsername;

import com.intemse.echef.validation.PasswordPolicy;

import javax.validation.constraints.Email;

import javax.validation.constraints.NotBlank;

import lombok.Data;

import lombok.EqualsAndHashCode;

import lombok.NoArgsConstructor;

import org.springframework.lang.NonNull;


Mindezek mellet te is tudsz annotációkat létrehozni, speciális általad igényelt funkciókkal.


[link]

[link]


A második link esetén azért jó ismerni az Aspect-Orientált programozást is, ami az OOP mellet működik. Lényegében 2-t dolgot kell meghatároznod AOP-ban:

- milyen kontextusban fusson

- mikor fusson (hívás elött, után, vagy körbeöleled a metódust)


pl.:


// com.foo.bar.annotations.MyAnnotation

@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD)

public @interface MyAnnotation {

}


// Körbe ölelős

// "within" azaz melyik package alatt éljen

// "execution" melyik metódusra. Ez a bármelyik, de lehet láthatóságot, visszatérés alapnám, paraméterezések alapján is.

// @annotation: és rendelkezik ezen annotációval

// Ha minden teljesül mert &&-el vannak elválasztva, akkor lefut az AOP

// Ez a String-ben a logika ez a Spring-EL expression: [link]


@Around(

_ _ "within(com.foo.bar.*) && " +

_ _ "execution(* *(..)) && " +

_ _ "@annotation(com.foo.bar.annotations.MyAnnotation)"

)

public Object method(@NonNull ProceedingJoinPoint pjp) throws Throwable {

_ _ // code...


_ _ Object[] args = pjp.getArgs(); // tegyük fel legalább 1 eleme van

_ _ args[0] = null;


_ _ // itt hívod meg a az eredetileg is hívott metódust, és az első paramétere

_ _ // NULL lesz mindig, bármit adnál át neki eredetileg, mert az AOP kicseréli a

_ _ //metódus hívás elött.

_ _ pjp.process(args);


_ _ // code...

}

2020. okt. 27. 15:41
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!