ugrás a tartalomhoz

java web programozás, hogyan kezdjek neki?

Kubi · 2012. Feb. 9. (Cs), 11.03
Sziasztok!

Leginkább php-s emberek vannak itt, ezt tudom, de hátha akad valaki aki ért java-hoz is :)

PHP-ban már elértem egy szintet, más webes programozási nyelvek iránt is elkezdtem érdeklődni, a java tetszett meg. Neten keresgélek leírásokat, de gondoltam java-ban tapasztaltabb emberektől megkérdezem:

Mit tanácsoltok, hogyan fogjak hozzá webes java tanuláshoz? Milyen keretrendszereket ismertek (Liferay amit eddig találtam)? A java szintaktikát menet közben tanulom, de ha tudtok jó leírásokat azt is szívesen venném :)
 
1

Java EE, Spring, és

Karvaly84 · 2012. Feb. 9. (Cs), 14.03
Java EE, Spring, Apache Ant és valamilyen alkalmazás szerver.

Ui.: De szerintem a Java SE változattal érdemes ismerkedni, amiben nem tudsz webes alkalmazást írni de az adatok feldolgozásához az alap osztályok ebben vannak (Bufferek meg hasonlók).
2

Könyvek

Poetro · 2012. Feb. 9. (Cs), 14.09
Ha a nyelvet még nem sajátítottad el, érdemes lehet például a Thinking in Java könyvet letöltened, vagy megvenned a fenti oldalról (a letöltés ingyenes). Szerintem egy igazán jó könyv, a nyelvet legalább megtanulod belőle, ha a webes részét nem is feltétlenül. Létezik egy könyv Core Servlets and JavaServer Pages mely már inkább a webes vetülettel foglalkozik a címben említett servlet-ek és JSP használatával.
3

ránézek ezekre, tág téma,

Kubi · 2012. Feb. 9. (Cs), 16.02
ránézek ezekre, tág téma, időm korlátozott, nehéz megtalálni melyik oldaláról fogjak neki a dolgoknak.
4

Korlátozott?

Poetro · 2012. Feb. 9. (Cs), 16.26
Szerintem mindenki ideje korlátozott (amíg meg nem találják az örök élet receptjét), de ha nagyon rövid az idő, miért nem olyannal akarod megoldani a problémát, amit ismersz, illetve van elég időd elsajátítani? A Java nem tartozik kifejezetten a gyorsan és részletesen elsajátítható nyelvek közé, főleg ha még a nyelv alapjait sem ismered. Főleg azért is írom ezt, mert a Java API-ja nagyon kiterjedt, mindenre létezik rengeteg megoldás, sőt még a beépített osztályok között is többel el lehet érni közel ugyanazt az eredményt, de nem biztos, hogy az az optimális megoldás, amit te választottál. Legalább negyed / fél évet kellene erre áldozni, hogy tényleg flottul menjen a dolog.
5

nem konkrét projektetet

Kubi · 2012. Feb. 9. (Cs), 17.16
nem konkrét projektetet akarok csinálni java-ban.

Egyszerűen érdekel valami php-n kívül, gondolkodok a python-on vagy ruby-n is
7

PHP-n kívül

H.Z. v2 · 2012. Feb. 9. (Cs), 17.29
Én most próbálom rábeszélni magam a Pythonra, bár elég nehezen megy (már úgy értem, a rábeszélés :) ) és próbálkoztam hasonló szinten a ruby-val is.
Ami szerintem gázos ezekkel:
- nem találtam olyan IDE-t, amiben ne találtam volna valami nagyon zavaró hibát (főként az automatikus kódkiegészítés terén)
- a ruby dokumentáltsága lehetne valamivel szebb/jobb is. Sokáig azt hittem, csak én vagyok lusta és ügyetlen, de valahol láttam egy komolyabb leírást, ott a szerző részletezte, hogy a ruby alkotója szerint a forráskód böngészésével több infóhoz lehet jutni, mint a dokumentációval.
- adatbázis használattal kicsit hadilábon állnak. Pl. python-hoz talált MySQL driver még a PDO színvonalát sem éri el, amennyire fel tudtam mérni.
- ha valami GUI-t szeretnél gyártani... idáig a ruby-val nem jutottam, de pl. a Pythonhoz van Qt, de a doksija elég hiányos és ahogy elnéztem, alig-alig használják. Van más, egyszerűbb környezet is, de azok meg kimondottan rondák linux alatt.
- ruby-val voltak még olyan gondjaim, hogy ami kiegészítés van hozzá, az mind a hobbiból írt szoftverek színvonalán áll (vagy működik vagy nem, esetenként eléggé összecsapott érzetet kelt stb.)

Ezek mellett a java... hát ég és föld. Bár bonyolult, meg néha nagyond tudtam utálni (különösen a swing miatt :) ), de mégis egy profi darab.

Ha nem ragaszkodsz a viszonylagos platformfüggetlenséghez, akkor lehet, hogy érdemes még körülnézni a .net-es cuccok környékén (pl. C#)
8

Én a Python-t Eclipse

Karvaly84 · 2012. Feb. 9. (Cs), 17.40
Én a Python-t Eclipse PyDev-el próbáltam ki, és kifogástalannak éreztem. Nagyon fullos környezet, egyedül a szintaktikájával nem bírtam meg barátkozni.
9

A kódkiegészítése annak sem

H.Z. v2 · 2012. Feb. 9. (Cs), 17.58
A kódkiegészítése annak sem tökéletes. Főleg, mivel a Python változóknak nincs előre definiált típusa, így hiába teszek x változóba Y osztályú objektumot, a későbbiekben az IDE nem tudja az x. hivatkozásoknál felkínálni az elérhető metódusokat. Egy java jellegű, erősen típusos nyelv esetében ez nem gond.
10

Komodo?

Poetro · 2012. Feb. 9. (Cs), 18.59
Mivel Python-os arcok fejlesztik, szerintem abban elég jónak kellene lennie a támogatásának.
11

Azt sohasem próbáltam, mert

H.Z. v2 · 2012. Feb. 9. (Cs), 19.03
Azt sohasem próbáltam, mert emlékeim szerint fizetős.
Az Eric és az IDLE is pythonos fejlesztés, oszt... néha a falat kaparom, különösen az Eric miatt. :)
Egyelőre marad a vi, mint a szövegszerkesztők svájci bicskája ;)
(nem fejlesztek, csak játszok, tanulgatok - átlag napi 10-20 percet rászánva :( )
12

Edit

Poetro · 2012. Feb. 9. (Cs), 19.05
A Komodo Edit ingyenesen elérhető. Valamint van az IDE-ből is 21 napos próbaidő.
13

Igaz, de az (számomra) nem

H.Z. v2 · 2012. Feb. 9. (Cs), 19.29
Igaz, de az (számomra) nem nyújt többet, mint a vi.
Persze az is tény, hogy évekkel ezelőtt nézegettem, akkor is perl miatt.

Egyébként azon már töröm a fejem egy ideje, hogy hogyan is tudná bármilyen ide, kulturáltan megoldani az automatikus kódkiegészítést egy gyengén típusos, OO nyelv esetében.
14

Viszonylag jól

Poetro · 2012. Feb. 9. (Cs), 19.41
Az tudom, hogy viszonylag jól megoldották JavaScript esetén. Gondolom hasonlóan jól fog működni Pythonban is. Azaz ha az aktuális kontextusban lett létrehozva az objektum, akkor szépen működik is a kódkiegészítés. Egyéb esetben elég bizonytalan, de van, hogy működik. Természetesen a függvények kiegészítése teljesen jó, csak a metódusokkal lehet probléma.
15

Egyébként azon már töröm a

Karvaly84 · 2012. Feb. 9. (Cs), 20.16
Egyébként azon már töröm a fejem egy ideje, hogy hogyan is tudná bármilyen ide, kulturáltan megoldani az automatikus kódkiegészítést egy gyengén típusos, OO nyelv esetében.


Én erre kitaláltam egy jó megoldást csak kevés vagyok a kivitelezéshez.

JavaScript-ben bosszant a dolog, és arra gondoltam, hogy az IDE pl. egy WebKit motorral értelmezhetné a kódot, így pl. az se lenne gáz ha egy closure-ban hozol létre egy osztályt. Persze nyilván lassabb lenne az IDE ez miatt meg lehet elmebeteg ötlet is ez részemről...
17

Sok esetben képtelenség...

H.Z. v2 · 2012. Feb. 9. (Cs), 20.38
... hiszen az adott változó értéke sokmindentől függhet.
Pl.

a=raw_input()
x=1 if a==10 else "xxx"
x.


Mit fog a . után felajánlani az IDE? Szóval macerás... :)
18

hat ez nem tul szep

dyuri · 2012. Feb. 10. (P), 10.17
Jo, de ilyet - ha meg is engedi a nyelv - eleg nagy illetlenseg csinalni, es nem csak az editorral, de magaddal is jol kiszursz...

Egyebkent en amikor programozok, altalaban tisztaban vagyok az altalam hasznalt objektumok tipusaival, sot olyan metodust is ritkan akarok meghivni, amirol nem tudom, hogy letezik-e, ezert nekem az altalad emlitett problema nem problema.

Nehany eve tartottam a budapestpy meetupon egy eloadast a vimrol, ha ugyis azt hasznalsz, akkor talalhatsz benne hasznos dolgokat. Azota persze csak javult a helyzet, de mar akkoriban egesz jol mukodott benne a kodkiegeszites (bar en a ctrl+space (vagy ctrl+x ctrl+o) kombot sosem hasznalom, szinte mindig eleg a ctrl+p).
19

Jó, ez most egy extrém példa

H.Z. v2 · 2012. Feb. 10. (P), 10.46
Jó, ez most egy extrém példa volt. De az ilyen lehetőségek miatt elég nehéz normálisan megcsinálni egy gyengén típusos nyelv esetében az automatikus kódkiegészítést.
Mellesleg a tudom, hogy milyen metódusai vannak, meg a lusta vagyok begépelni, mert egyszerűbb listából választani, az ugye nem egy kategória? ;)
20

lustasag

dyuri · 2012. Feb. 10. (P), 11.52
A lustasag is relativ, en meg lusta vagyok attenni a kezem a nyilacskakra (egerre?), a hjkl meg nem mukodik ilyenkor :P

Egyebkent igen, dinamikus tipusos nyelveknel ezt nehez megoldani (a python erosen tipusos), de en meg sosem ereztem akkora szukseget, mint amikor javaval dolgoztam, ott en is lelkesen nyomkodtan a ctrl+space-t. Hogy ez miert van, azt nem tudom (talan mert ritka a 40 karakter hosszu python metodusnev?), de nembiztos, hogy a nyelv "hibaja", hanem inkabb a tulbonyolitott library-k tehetnek rola?

Es ezzel talan kicsit vissza is jutunk a thread eredeti temajahoz, ha java programbol akar az ember egy "Hello word!" stringet valaki mas bongeszojebe juttatni (es erteni is szeretne, hogy ez hogy mukodik, raadasul kvazi szabvanyos modon"), akkor nehany ezer oldalt nem art hozza elolvasnia, mig mondjuk python eseteben elolvassa a WSGI PEP-jet, es kb. tudja is, hogy mit kell csinalnia. Mindkettonek megvannak az elonyei, illetve hatranyai, altalanossagban szerintem nem lehet kijelenteni, hogy melyik a "jobb".
21

???

H.Z. v2 · 2012. Feb. 10. (P), 12.11
Bár ez itt off, de akkor mitől lesz valami "gyengén típusos"? (mellesleg a pythonról ezt valamelyik magyarra fordított tutorialban olvastam)
update: bocs, közben utánanéztem, részben igazad van. Amit írtam, az valóban a dinamikus típuskezelés következménye, a gyengén típusos pusztán annyit jelent, hogy nem kényszeríti a programozót az adattípusok közti konverzióra, megoldja magától. (ettől még a Python gyengén típusos, mert pl. stringhez bármikor hozzá tudsz fűzni numerikus értéket anélkül, hogy konvertálnod kellene ;-) )

---------
Egyébként nem állítottam, hogy a nyelv hibája lenne. Ez csak egy a sok közül, ami zavart a javaval való ismerkedés után. Nem mellesleg: én folyamatosan _automatikus_ kódkiegészítésről beszélek, amikor gépelés közben automatikusan feldobja a lehetőségeket, ha kis szünetet tartok.
22

pedig nem tudsz

dyuri · 2012. Feb. 10. (P), 12.18

>>> 'a' + 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: cannot concatenate 'str' and 'int' objects
Szoval ezert erosen tipusos.
23

Akkor tegnap mit

H.Z. v2 · 2012. Feb. 10. (P), 12.39
Akkor tegnap mit csináltam?
Valahogy sikerült egy kifejezésbe összehozni stringbe tett számot és valóban numerikus értéket...
MySQL-lel játszottam, szóval nem kizárt, hogy csak a "...%s...)%numerikus_valtozo ..." miatt emlékeztem így. Normális körülmények közt eszembe sem szokott jutni ilyesmit elkövetni.

Na mindegy, ezt már nem fogom megtudni. Ahogy azt sem, hogy abban a leírásban (rosszul emlékeztem, ez nem fordítás - viszont ELTÉ-s) miért írták, hogy gyengén típusos.
24

Ott is lehetnek diszlexiások

kuka · 2012. Feb. 10. (P), 12.52
Ott is lehetnek diszlexiások meg hasonlóak:
Copgyright © 2010 - ELTE IK
25

Ezek szerint... mindenesetre

H.Z. v2 · 2012. Feb. 10. (P), 13.10
Ezek szerint... mindenesetre írtam nekik, hogy esetleg, ha ők is úgy gondolják, talán javítsák ki. :)
De közben gúgli pajtit is megkértem, hogy keressen még olyan oldalt, ahol gyengén típusosként említik a pythont és... hát van még... inf.elte.hu-s cím is. :(
26

%s -> str()

dyuri · 2012. Feb. 10. (P), 13.16
A "%s" % x explicit konverziot hajt vegre, meghivja a beepitett str() fuggvenyt az adott valtozoval (ami pedig kb. a __str__ metodust hivja meg az adott objektumon). Igy nem csak szamokat, hanem barmi mast is ki lehet iratni, szamoknal az __str__ nem meglepo modon a szamot adja vissza stringkent.

Arrol lehet vitatkozni, hogy mivel az str()-t helyetted hivja meg, ezert ez kb. implicit konverzio, de altalanosan nem igaz, hogy mindent atkonvertal valami masra, amikor nem kompatibilis tipusok talalkoznak (pl. javascript, ami ezt raadasul nem feltetlen elsore is atlathato modon csinalja).
27

OK, felfogtam elsőre is, csak

H.Z. v2 · 2012. Feb. 10. (P), 13.20
OK, felfogtam elsőre is, csak találgattam, hogy mi a bánatért emlékszem úgy épp tegnapról, hogy sikerült egy automatikus konverziót kicsikarni a pythonból.
Sajnos(???) amikor én tanultam, még nem nagyon voltak ilyen nyelvek, így meg sem fordul a fejemben, hogy keverjem az adattípusokat. Ráadásnak meg ott a példa, hogy elég sok helyen emlegették gyengén típusosnak a nyelvet, én meg elhittem. (pontosabban általában a dinamikus szinonimájaként láttam emlegetni, nem néztem utána, mit is jelent valójában)
28

Összeírtam

Poetro · 2012. Feb. 13. (H), 17.20
Korábban már összeírtam, mit jelent a gyengén típusos, és illetve a dinamikus típuskezelés.
6

A leggyorsabb ugrás talán az,

kuka · 2012. Feb. 9. (Cs), 17.16
A leggyorsabb ugrás talán az, ha felteszel Java EE-t, Tomcat alkalmazás szervert és NetBeanst, majd beállítod őket az együttműködésre, például Adding tomcat to Netbeans IDE alapján.

NetBeans képes deployolni és bökdösni az alkalmazás szervert. Te pedig máris a JavaServer Pages (azaz JSP) és Java Servlet tanulmányozására összpontosíthatsz.

Ami a személyes véleményemet illeti, felejtsd el. Én elég sok mindent tanultam meg önerőből, csak dokumentációból és webes keresésekből, de a szerver oldali Javát nem tartom alkalmasnak az effajta ismerkedésre.
16

Köszi a tanácsot, azért

Kubi · 2012. Feb. 9. (Cs), 20.29
Köszi a tanácsot, azért megpróbálkozok vele ;) A linkjeid kicsit helyrerakták a fejemben a dolgokat, hogy mit merre és hogyan keressem, ennyi talán elég lesz.