Re: Literatura
Dobry den, neuviedli ste, ci si vystacite s anglickou literaturou. Rovnako by bolo dobre uviest okolnosti (ste absolvent skoly, ktory chce ist na vyssie pozicie v Jave? Ste Java SE vyvojar, co chce zvladnut nove technologie?), pretoze zdrojov je prilis vela mnoho a casu prilis malo. Ako povedali predrecnici, zozbieranu literaturu do podoby knihy zrejme v mnohych pripadoch nezozeniete; vyvoj ide mimoriadne rychlo dopredu a uz sa pomaly neoplati ani kupovat papierove knihy v originali. Kolega Polak spomenul linky na moj web, kde som spisoval veci, ale aj tam uz je viac veci za zenitom, resp. uz sa daju robit aj inak (Spring anotacie vs XML), ale nieco sa tam da najst Z tych veci, o ktorych mam vedomosti: *Java Persistence with Hibernate (http://www.manning.com/bauer2/), pokryva aj JPA *Spring in Action (http://www.manning.com/walls5/) *Eclipse: trufam si odhadnut, ze zaklady pouzivania IDE sa daju ziskat praxou za par dni, pripadne konzultaciou na dvoch kavach s nejakym zdatnym pouzivatelom. *J2EE by si ziadalo vyspecifikovat, jednak je to siroky diapazon nastrojov a technologii, jednak ako pojem je to zastarale (nahradeny bol Java EE 5, 6) a jednak existuje vyznamny prekryv so Springom. Robert Novotny On 1.12.2014 20:27, pavel.sl...@volny.cz wrote: Dobrý den, mohl by mi někdo poradit, kde seženu literaturu zejména k vývojovým prosředím pro Javu: 1) JBOSSS 2) XForms 3) Hibernate 4) Spring Framework 5)Eclipse 6) J2EE Pěkně zdravím a předem děkuji za odpověď! Mgr. Pavel Šlégr Praha 12 - Modřany Mobil: 731 744 908
Re: analyza textu a urcenie klucovych slov
Pozdravujem, skuste pozriet niektory z projektov v [1]. Prakticke skusenosti sice nemam, ale viackrat sa spominalo pouzitie hunspellu, napr. v [2]. [1] http://www.sk-spell.sk.cx/ [2] http://www.zdrojak.cz/clanky/elasticsearch-vyhledavame-hezky-cesky-ii-a-taky-slovensky/ On 11.6.2014 16:48, Ivan Polak wrote: Zdravim konferenciu, potreboval by som poradit s analyzou textu. Texty su v slovencine a potreboval by som v nich vyhladat klucove slova, ktore mam dopredu definovane. Napriklad: Definovana mnozina klucovych slov: {Bratislava, Zvolen, Košice, Poprad} text na analyzu: Vitajte na oficiálnej stránke Letiska Bratislava! Ako významný dopravný uzol v stredoeurópskom regióne Vám ponúkame množstvo atraktívnych destinácií. v tomto texte nie je problem, aj ked by som pouzil primitivne riesenie splitnut to podla medzier a potom jednotlive slova z textu vyhladavat v definovanej mnozine. ale: Po Bratislave by sa tak mohli dočkať nových nemocníc aj ďalšie regióny. „Investície do rekonštrukcie existujúcich budov a následné zvyšovanie ... a tu uz je problem z predchadzajucim pristupom, pretoze v slovencine je sklonovanie. aj ked velmi nepredpokladam, neviete niekto o nejakej kniznici, ktora by dokazala hore popisane v slovencine, teda vyhladavat definovane slova a aj ich vysklonovane tvary. dakujem Ivan .
Re: Prázdné okno s JFrame v Ubuntu
Nie je to nahodou problem suvisiaci s tym, ze UI by sa v main() malo spustat pomocou SwingUtilities.invokeLater()? On 20. 9. 2011 14:01, Tomas Beneda wrote: Setkal, UI nebylo updatovano z EDT. Toto se da hlidat pomoci CheckThreadViolationRepaintManager, jenz prohresky loguje (vypise stack trace), viz napr http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html Původní zpráva Od: Libor Jelinekljeli...@virtage.com Předmět: Prázdné okno s JFrame v Ubuntu Datum: 20.9.2011 13:21:07 Dobrý den! Zhruba při pět z deseti spuštění primitivního JFrame se místo obsahu zobrazí jen rám okna. Okno není zamrzlé, jde zvětšovat. Přes VisualVM jsem schopen zjistit, že aplikace v ní žije, ale není vidět. Viz screenshot. Tady jsou moje verze javy a OS: libor@vlm-test-04:~$ java -version java version 1.6.0_26 Java(TM) SE Runtime Environment (build 1.6.0_26-b03) Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode) libor@vlm-test-04:~$ uname -a Linux vlm-test-04 2.6.38-11-generic #48-Ubuntu SMP Fri Jul 29 19:02:55 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux Naštěstí se mi to děje jen na mém výjovářském počítači a ne v produkci. Ale i tak je to pěkně na prášky. Nesetkal jste se někdo s něčím podobným? Díky Libor
Re: JAX-WS: kde začít
V JDK 6 je zabudovana JAX-WS implementacia, dokonca aj s primitivnym testovacim serverom, kde nemusite robit deploye - kedysi som spisal par poznamok v [1]. V dalsom kroku budete zrejme chciet par informacii k JAXB - technologia mapujuca instancie beanov na XML - par infosiek je v [2] Referencna implementacia JAX-WS bolo vzdy Metro, je k nemu kopa tutorialov. Samozrejme, mozete pouzit aj inu implementaciu - Axis2 alebo CXF, ale na uvod je to zrejme jedno. [1] http://ics.upjs.sk/~novotnyr/wiki/Java/JDK6AndWebServices [2] http://ics.upjs.sk/~novotnyr/wiki/Java/SerializaciaADeserializaciaObjektovPomocouJAXB RN On 4. 9. 2011 15:10, Dušan Rychnovský wrote: Dobrý den, již několik let programuji v jazyce Java a vyznám se dobře v standardní edici (a některých příslušných nástrojích, jako je maven či log4j). Enterprise technologie neznám prakticky vůbec, resp. nanejvýš jsem o některých slyšel. Nevím ani, jak přesně se nahrávají webové aplikace na server (Tomcat), atp. Nyní bych se potřeboval naučit používat technologii JAX-WS pro vytváření webových služeb a příslušných klientů. Prohlédl jsem si pár článku a tutoriálu na internetu, nicméně všechny implicitně předpokládaly znalosti jiných enterprise technologií a ani po jejich přečtení nejsem schopný jednoduchou aplikaci vytvořit a zprovoznit. Prosím doporučte mi linearizovaný seznam technologií od Java SE po JAX-WS (pokud možno i vhodných studijních materiálů) - jak se s nimi postupně seznámit. Předem děkuji, Dušan Rychnovský
Re: Otazka ohladom MVC
V Spring MVC je na to milion moznosti. Na tej zakladnej urovni plati, ze kazdy view je oznaceny logickym menom. V kontroleri sa napchaju data do modelu a nasledne sa urci logicke meno viewu, ktory sa ma zobrazit. Mimo kontrolera je nakonfigurovany view resolver, ktory povie, ktory fyzicky view sa pouzije pre zobrazenie vysledku. Skolsky priklad: ak kontroler povie, ze sa ma zobrazit view s logickym menom summary, tak je mozne nakonfigurovat napr. taky view resolver, ktory urci, ze fyzickym viewom bude JSP subor WEB-INF/pages/summary.jsp. Tym sa zabezpeci, ze kontroler sam o sebe nevie, ktory fyzicky view (teda ci to bude JSP, PDF alebo Excel) sa ma zobrazit, ale deleguje to na iny objekt. RN On 27. 7. 2011 9:40, Zdenko Vrabel wrote: Dobry den, Moju otazku by som chcel smerovat skor k MVC patternu ako ku Jave samotnej tak snad to nebude vadit. Ak sa nahodou tiez budem pytat somarinu, tak ma ospravedlnte ale potreboval by som sa len proste v niecom uistit alebo naopak aby mi niekto povedal ze je to somarina. Totizto nedavno som premyslal nad MVC patternom (pre web). Totizto zaujimalo by ma, ci je spravne/nespravne ak v kompetencii controllera je rozhodovat o tom aky view sa pouzije alebo naopak. Mal by controller vobec nieco vediet o viewoch? Vysvetlim na priklade. V dnesnej dobe sa dostavaju do popredia rozne iPhony, Androidy, iPady a neviem co. K tomu sa zacina aj prisposobovat design niektorych webov. Ide o to, ze dajme tomu design pre iPad je nieco uplne ine ako design pre klasicky browser (z pohladu web designera). To ma privadza k tomu, ze je potrebne riesit aky view sa na zaklade User Agenta pouzije. Moja otazka je vlastne o tom, ci je spravne mat v ramci MVC nejaky mechanizmus routingu a Controller by do toho nemal zasahovat (v podstate len produkuje model) alebo naopak. Takyto mechanizmus znecistuje MVC/ zvysuje jeho zlozitost a toto by mal riesit prave controller. Alebo je to uplne jedno? Este doplnim ze hovorim o MVC vseobecne nie o nejakom konkretnom ako Spring MVC. Za odpovede vopred dakujem, Zdenko Vrabel
Re: CZJUG - Ruby on Rails - prepis prednasky
Chcel som dokonca poprosit niekoho, aby sa na tie preklepy pozrel, takze slobodne si to opravte a zverejnite na blogu. Aspon to bude pohromade. Za seba ako divaka musim povedat, ze skoda, ze namiesto prvych dvadsiatich vysokozapalnych a WTF minut (kde ma dvihalo zo stolicky) neostalo viac casu na prakticke ukazky alebo na viac wow! efektov typu Capistrano. RN On 18. 7. 2011 10:51, Jiří Hradil wrote: Zdar a dik za nej. Prosim o souhlas s vymlacenim preklepu a umistenim na hradil.cz, bude to pekne doplneni videa. Jirka 2011/7/18 Robert Novotnyrobert.novo...@upjs.sk: Zdravim konferenciu, kedze v poslednych par tyzdnoch je tu burliva debata o Ruby on Rails, v hluchej chvili som vyhotovil prepis prednasky J. Hradila z CZJUGu z 28. 2. 2011 ,,Ruby on Rails - Zapomente na Javu. Prepis je http://ics.upjs.sk/~novotnyr/wiki/Java/CZJUG-RubyOnRails-ZapomenteNaJavu. Prepis povazujem za uzitocny jednak pre mnohe kreativne myslienky a jednak pre potreby buducej argumentacie v linii Java vs RoR. RN
CZJUG - Ruby on Rails - prepis prednasky
Zdravim konferenciu, kedze v poslednych par tyzdnoch je tu burliva debata o Ruby on Rails, v hluchej chvili som vyhotovil prepis prednasky J. Hradila z CZJUGu z 28. 2. 2011 ,,Ruby on Rails - Zapomente na Javu. Prepis je http://ics.upjs.sk/~novotnyr/wiki/Java/CZJUG-RubyOnRails-ZapomenteNaJavu. Prepis povazujem za uzitocny jednak pre mnohe kreativne myslienky a jednak pre potreby buducej argumentacie v linii Java vs RoR. RN
Re: smerovanie javy 7,8
Tiez ma zaujalo tych 10 rokov RoR, ale to bude zrejme preklep. RN On 16. 7. 2011 18:01, Oto Buchta wrote: 2011/7/15 Jiří Hradil ji...@hradil.cz mailto:ji...@hradil.cz Milej zlatej Makube, pres moje male websajty v railsech tecou aktualne asi 2 miliardy a o nejvetsi system se staram uz 10 let ;))). Nehrajte Doporučuji se s Jirkou Hradilem nepřít, neb má zprávy z budoucnosti a snaží se nás již teď přesvědčit, kterým směrem vývoj jde. Děkujeme Jirko. Ve kterém roce se ta křivka používání Ruby On Rails zlomí? A propos, jak dopadne příští Liga Mistrů? Že bych vsadil. Dík předem. http://en.wikipedia.org/wiki/Ruby_on_Rails -- Oto 'tapik' Buchta, ta...@buchtovi.cz mailto:ta...@buchtovi.cz, http://tapikuv.blogspot.com
Re: smerovanie javy 7,8
Preco nie su properties, mi nie je jasne a AFAIK v Jave 8 nebudu. Java je uz zamrazena sama v sebe, lebo spatna kompatibilita je nutnost a kazda dramaticka syntakticka zmena je zvazovana natolko, ze niekedy je nemozne ju s kompatibilitou sklbit (.NET ma v tomto vacsiu flexibilitu) Ruinujuce a JAVA JE MRTVA hlasky nie su na mieste, isteze dalsie jazyky (Groovy, Scala) mozno ju nahradia z hladiska syntaxe, ale dolezite je, ze stare kniznice sa nestratia, Closures budu, delegati su prezlecene closures, co este okrem properties chyba? RN On 14. 7. 2011 9:50, x y wrote: Viete mi niekto povedat preco konecne nedaju do javy z dovodu sprehladnenia kodu praca s property ako napr. v c# - velmi to sprehladni kod(namiesto kopy balastu gettrov a settrov). Videl som projekt lombok ktory riesi tento problem anotaciami, ale asi vhodnejsie je zaviest klucove slovo do jazyka. (Btw mozno by to bolo vhodne sa spytat na czjugu o java7 kedze tam budu ludkovia z oraclu. Ozaj by ma zaujimali argumenty preco to tam konecne nedaju) V .nete inovuju dost casto, a ten jazyk je momentalne mile pred javou, a tiez chystanou javou 7(v ktorej su podla mna kozmeticke upravy, ktore vecsine developerom v podstate nijak nezjednodusia pracu). Myslim ze by bolo vhodne aby oracle nezaspal navavrinoch a java8 bola konecne konkurencie schopny jazyk(je CO NAJSKOR NUTNY radikalny zasah do jazyka) a vzala si z roznych jazykov to dobre (napr. clojures, type inference, property, mozno delegaty..), ak neurobia RADIKALNE INOVACIE tak .net a pripadne dalsie jazyky nad JVM(scala,groovy..),ruby,python javu zruinuju(co sa deje momentalne) a java bude URCITE cobolom v korporaciach.
Re: smerovanie javy 7,8
Rozmyslam o situaciach, ked potrebujete mat typesafe pristup k properties (napr. wicketovske bindingy modelu na bean by sa zjednodusilo). Ci si myslite, ze sa to da riesit plug-inmi pre IDE? On 14. 7. 2011 12:07, Zdeněk Troníček wrote: Property tak jak jsou řešeny v projektu Lombok podle mého názoru do jazyka nepatří. Používají totiž anotace a anotace jsou v Javě prostředek pro specifikaci dodatečné informace o zdrojovém kódu. Proto by bylo divné, kdyby anotace měnily sémantiku zdrojového kódu. O jakém balastu to mluvíš? Gettery a settery přece umí každé IDE vygenerovat a psát p.speed místo p.getSpeed() mi nepřijde jako zásadní změna. Navíc mnohem důležitější než snadnost či obtížnost psaní je snadnost či obtížnost čtení (v literatuře se uvádí, že na jedno napsání připadá až 20 čtení toho samého kódu). A tady se hledají argumenty pro properties těžko. Mít pro anotace klíčové slovo by nebylo špatné, kdyby bylo bývalo zavedeno před deseti lety... Teď už se do toho nikomu nechce (z důvodů zpětné kompatibility a také proto, že zisk je poměrně malý - toto není palčivý problém jako třeba closures). Z.T.
Aplikacia na vyplnanie instancii XML schemy
Zdravim, v ramci jedneho projektu som sa stretol s ulohou, ked treba zbuchat aplikaciu na vyplnanie instancii XML schemy. Na vstupe je lubovolna (ale rozumne obmedzena) XML schema, pre ktoru sa zobrazi formular s polickami, ktore pouzivatel vyplni/vyklika. Ide prakticky o XML data binding. Na toto by sa bezne pouzil JAXB, ale ten zrejme nedokaze za behu vygenerovat triedy a na ne namapovat hodnoty. Jedna ocividna moznost je preliezt XSD ako klasicky XML dokument a v servlete vygenerovat lepenim stringov formular, ktory pouzivatel vyplni a po jeho odoslani sa hodnoty vyplnene namapuju na vhodny objekt. Nemate niekto skusenosti s lepsim napadom? Robert Novotny
Re: Co se stalo s BeansBinding?!
On 16. 6. 2011 12:17, Jiří Hradil wrote: A je sakra rozdil psat hada jakozto semestralku pro softwarove inzenyrstvi vs produkcni system. Na jak dlouho to tedy vidite a co ucici krivka? Toto ma zaujima: aky bol vychodiskovy stav? Je to tak, ze za rok z ,,proceduralneho programovania ste mali juniora Spring/JPA/Wicket/support?A RoR expertovi to trvalo kolko? Mate nejake priklady z realneho zivota, ci skusenosti zo zakopov, ktore mozete spomenut? Inak ten Evans report ma vysvetlujucu vetu: “We’re seeing a definite resurgence in Java development across all regions,” said Janel Garvin, CEO of Evans Data Corp., “which correlates directly with the increasing importance of the smartphone as a development target. Java is the most widely used language for smartphone development and is well suited for most of the major platforms including Android, Blackberry, Symbian, and cross platform web development. Asia Pacific developers are slightly out in front because smartphone development has been more deeply ingrained in that region.”
Re: Co se stalo s BeansBinding?!
Mne sa paci, ako sa operativne miesa Java ako VM, Java ako syntax a Java ako mnozina tried v standardnej kniznici do jednej hromady a argument voci jednemu jazyku sa veselo pouziva v druhom. Su ludia, co zacnu kricat, ze Java je pomala a pritom radostne pouzivaju Python/Ruby. (Teraz nemyslim konkretne predosly prispevok.) Detto argumenty voci frameworkom, jasne, ze praca s datumami java.util.Date/Calendar je des a hroza, ale mame JodaTime a co brani pouzivat dodatocny framework / kniznicu presne tak, ako Ruby vyuziva RoR ci Perl stoji na milione CPANovskych modulov? To je potom taky paradox: na jednej strane agilne projekty s malymi timami, ktore nemaju problem so slobodou volby: a tam je napr. alternativa v podobe zmienenych Grails / Roo alebo velke enterprise firmy, ktorym debaty typu ,,kde su closures? im nic nehovori, lebo je to pre nich okrajova zalezitost v porovnani s istotou a stabilitou platformy. A inak tie inovacie: cim viac sa produkt rozsiri, tym viac sa zabedni voci dramatickym zmenam. Kolko trvalo, kym sa PHP5 dostalo na webhostingy? RN On 16. 6. 2011 11:53, Petr Balat wrote: Dělám v javě už přes 5 let a pořád mě udivuje že si většina okolních javistů myslí jak je java jazyk moderní nebo jak je čistá. Například nepoužitelná práce s datumem (člověk musí používat jodaTime), nedostatečná práce s kolekcemi (predikáty apod - zase najít jinou knihovnu google, apache). Je pěkné že má java nejlepší vývojové prostředí ale i tak mi přijde vývoj pomalejší. Tuny frameworku taky jazyk nezachrání. 3 roky sleduju c#/.net a je mi dost líto že se java se nikam neposouvá a to mám javu platformu rád (jazyk už né:-) a argumenty s groovy jsou pro enterprise projekty jenom sen). viz http://www.slideshare.net/jeffz/why-java-sucks-and-c-rocks-final PB Dne 16. června 2011 11:02 Stanislav Ošmeraosm...@gmail.com napsal(a): 2011/6/16 Jiří Hradilji...@hradil.cz Proto sem pisu. Jasne, schvalne konfrontacne, ale vsimate si, kolik je pak fakt DOBRYCH reakci? Asi proto ze na to vetsina lidi nema chut vubec reagovat. Ja jsem rozepsal prispevek, ale pak jsem to smazal s tim ze se do takovyhle uchylny debaty nebudu poustet. jen drobnou reakci: JEDNODUCHOST, neni vsechno vetsina zakazniku kteri chteji poradnej system naopak pozaduje silnou zpetnou kompatibilitu, konzervativnost, typovou kontrolu. Kdyz budu chtit psat hello world tak pouziju nejaky lehky scriptovaci jazyk, kdyz mam v tymu 50ti lidi z ruznou urovni znalosti psat nekolikavrstevny system komunikujici s dalsima v heterogenim prostredi pro klienta ktery zaplati desitky milionu dolaru, tak je to o necem jinem. -- Stanislav Ošmera Work: +44 (0)2075 980 343 Cell: +44 (0)7758 968 220 Skype: sosmera ICQ:149634231 Jabber: osm...@gmail.com
Re: Co se stalo s BeansBinding?!
A mohli by ste to zhrnut pre potreby diskusie (predpokladam, ze nie kazdy bude mat moznosti vysledovat celu 70minutovu prednasku)? Dakujem. On 16. 6. 2011 12:38, Jiří Hradil wrote: Ahoj, mrknete na http://www.youtube.com/watch?v=eOdSO1sk3mA, tam mam komplet celou anabazi :). J. On Thu, Jun 16, 2011 at 12:34 PM, Robert Novotnyrobert.novo...@upjs.sk wrote: On 16. 6. 2011 12:17, Jiří Hradil wrote: A je sakra rozdil psat hada jakozto semestralku pro softwarove inzenyrstvi vs produkcni system. Na jak dlouho to tedy vidite a co ucici krivka? Toto ma zaujima: aky bol vychodiskovy stav? Je to tak, ze za rok z ,,proceduralneho programovania ste mali juniora Spring/JPA/Wicket/support?A RoR expertovi to trvalo kolko? Mate nejake priklady z realneho zivota, ci skusenosti zo zakopov, ktore mozete spomenut? Inak ten Evans report ma vysvetlujucu vetu: We're seeing a definite resurgence in Java development across all regions, said Janel Garvin, CEO of Evans Data Corp., which correlates directly with the increasing importance of the smartphone as a development target. Java is the most widely used language for smartphone development and is well suited for most of the major platforms including Android, Blackberry, Symbian, and cross platform web development. Asia Pacific developers are slightly out in front because smartphone development has been more deeply ingrained in that region.
Re: Co se stalo s BeansBinding?!
Proč pokaždé zrovna moje otázky vyvolají takový rozruch?:-) To uz je taky folklor, ze ked hocikomu pridete vysvetlovat, ze jeho oblubena vec je na prd/mrtva, tak sa strhne flamewar. Situaciu, ked diskuter pride, vyprovokuje vsetkych a potom potichu zmizne, radsej nazyvat nebudem :-) Zosumarizujete mi aspon Vasu prednasku, o co som Vas prosil vyssie? Dost by mi to pomohlo, lebo ma to zaujima. - Inak, venoval som teraz pol semestra experimentalnej vyucbe Groovy a zacinam mat pocit, ze zaciatocnik, ktory nema s cim porovnavat, prakticky nie je az taky ohureny syntaktickymi vymozenostami a dynamickymi vlastnostami ako napr. clovek, ktory prejde z Javy do Pythonu/Groovy. Samozrejme, priamociara syntax dost pomaha: ide o to, aby sa neupisal k smrti, nemusel nahanat kazdu bodkociarku a nebol zavaleny zbytocnostami (napr. Lazarus a jeho predgenerovany kod formulara, z ktoreho su zaciatocnici pomerne mimo, alebo uz len povestne zaklinadlo public static void main). Ziskal som dojem, ze omnoho dolezitejsie je, aby bol na chyby upozorneny co najskor a co najjasnejsie. V Groovy sme sice radostne buchali programy (v NetBeanse je podpora out of box), ktore boli kratucke, strucne, ale stacilo sa preklepnut v nazve instancnej premennej a uz lietali po konzole stack tracky, ktore bolo treba luskat a hladat v nich pricinu chyby... co je horsie v porovnani s lazarusovskym error logom, kde zaciatocnik namemoruje typicke chybove hlasky a vie z nich ako-tak vydedukovat pricinu chyby a opravit ju. Tie dynamicke vlastnosti pre zaciatocnika nie su az take terno. Zaciatocnik nechce pisat ultrakratke programy, on je rad, ze mu to nieco kresli/hra/tancuje a ze ho jazyk nefrustruje niecim, comu nerozumie. Rovnako ho az tak nefascinuju reklamne tendencie ,,to co v Jave napisete na tri metody, mate v Pythone/Groovy na jednu closure ci jeden list comprehension. A dost kontraproduktivna je ,,cierna magia, ktora je fascinujuca dovtedy, kym funguje, ale depresivna, ked zacne padat na mylnych hlaskach a chybach. RN On 16. 6. 2011 14:28, Vladimir Balko wrote: Na některých školách prosazují pro úvodní kurzy Python, ale já se domnívám, že to, že v jazyku napíšete jednodušší Hello World a snadněji v něm inicializujete seznam, z něj ještě nedělá vhodnější jazyk pro výuku. No podla mna je python vhodnejsi na vyuku uz len kvoli tomu, ze nuti pisat pekne programy (odsadzovanie...) a nie je taky ukecany ako java - tzn. algoritmy su v nom v prirodzenejsej podobe - skoro matematicky zapis. A este sa k tomu omnoho lahsie nauci. Suhlasim vsak, ze asi je vhodnejsie najprv nabrat nejake skusenosti s typovanymi jazykmi a az potom prejst na netypove. Mam vsak tusenie, ze typovane jazyky sa tak o cca 10 rokov budu pouzivat uz iba na specialne oblasti, kde to bude vyhodnejsie. Vyvoj speje k stale vyssie urovnovym jazykom a netypova syntax je podla mna rozhodne tymto smerom. VBalko 2011/6/16 Pecinovský Rudolf rudolf.pecinov...@i.cz mailto:rudolf.pecinov...@i.cz jak dlouho vam trva, nez z lamy udelate Java programatora, ktery muze psat produkcni systemy? ... A je sakra rozdil psat hada jakozto semestralku pro softwarove inzenyrstvi vs produkcni system. Na jak dlouho to tedy vidite a co ucici krivka? Java je podle mne v současné době nejlepší jazyk pro vstup do světa programování. Nabízí prakticky vše, co je potřeba, a na druhou stranu toho neumí zbytečně moc, takže ji můžete do studentů nalít za semestr. O druhém takovém jazyku nevím. Na některých školách prosazují pro úvodní kurzy Python, ale já se domnívám, že to, že v jazyku napíšete jednodušší Hello World a snadněji v něm inicializujete seznam, z něj ještě nedělá vhodnější jazyk pro výuku. Dynamické jazyky by se podle mne měly učit až poté, co už má student-programátor něco za sebou a umí se dobrovolně ukáznit, protože jinak mu mohou připravit šeredná překvapení. My učíme v prvním semestru programování a v druhém mix technologií + sw inženýrství. Pak se studenti rozdělí na ty, kteří dají přednost managementu (těch je většina) a ty, kteří dají přednost programování. Ti pak mají předmět Moderní programovací techniky, v němž jim předvádím Groovy. Ne proto, že by bylo nejlepší (i když je ;-), že), ale proto, že nabízí většinu toho, co najdete v ostatních jazycích typu Python, Ruby, Smalltalk atd., a přitom se studenti nemusí učit novou syntaxi. Neustále se jim snažím vtloukat, ať se učí především principy, protože jazyky přicházejí a odcházejí, ale principy přežívají neporovnatelně déle. Vývoj produkčních systémů ale není jenom o programování. Je to bohužel o těch všech frameworcích, o spolupráci mezi různými aplikacemi, o kontinuální integraci, průběžném testování atd. atd. Vstřebat vše musí trvat dlouho. Pokud ale student přijde někam, kde dostane konkrétní úkol na konkrétním projektu, stačí mu
Re: Groovy porovnání s NULL
Null je typu NullObject a operatory porovnavania nikdy nehadzu NullPointerException. Navyse plati, ze null je mensie nez akykolvek iny objekt. Priamu zmienku v dokumentacii som nenasiel, ale v unit testoch existuje CompareToTest.groovy, kde je ukazka: def a = 123 def b = null def result = a = b assert result 0 Operator = je compareTo(). On 6. 5. 2011 8:59, Ing. Jan Novotný wrote: Zdravím konferenci, dokážete mi někdo prosím vysvětlit proč Groovy pro snippet null 100 vrací true? Ukázka: http://groovyconsole.appspot.com/script/478001 Jsem Groovy lamka, ale tohle mě opravdu překvapilo. V plain java podobná věc hodí samozřejmě chybu. Tuším že bude nějaký problém v Null Groovy objektu - tj. že levá strana porovnání není braná jako číslo ... tohle už chybu (jak bych očekával hodí): ((int)null) 100; Honza -- Ing. Jan Novotný @@ http://blog.novoj.net Myšlenky dne otce Fura --
Re: javac vs. Eclipse - čísla řádků v .class u víceřádkových výrazů
Nenechajte sa zmiast. Eclipse samozrejme zobrazi kompilacnu chybu v Problems, podciarkne Vam zly vyraz... ale to, co vidite, je chyba, ktora vznikla za behu :-) To co vidite, je stack trace vyhodenej vynimky java.lang.Error, ktora nastala po spusteni triedy. Alebo inak: pozrite sa do adresara s .class subormi, ECJ napriek kompilacnej chybe vyprodukoval Thing.class a ked sa don pozriete nejakym editorom / dekompilatorom / disasemblerom, tak uvidite, ze v nom je metoda getSecret(), ktora ma prakticky jeden riadok: throw new Error() On 26. 4. 2011 12:22, Libor Jelinek wrote: Ten Váš úryvek však ECJ v mých Eclipsech (Helios Service Release 1, Build id: 20100917-0705) nezkompiluje. Vypíše (správně) chybu: /Exception in thread main java.lang.Error: Unresolved compilation problem: x cannot be resolved to a variable at Thing.getSecret(Thing.java:3) at Thing.main(Thing.java:7)/ Libor Dne 26. dubna 2011 0:26 Robert Novotny robert.novo...@upjs.sk mailto:robert.novo...@upjs.sk napsal(a): Informacii o tom kompilatore nie je vela. Prakticky sa vie len to, ze Eclipse Compilator (ECJ) sa hrdi inkrementalnou kompilaciou, co znamena, ze v ramci projektu sa udrziava mnozina zmien v suboroch, ktora nastala od poslednej kompilacie. Pri rekompilacii sa zisti len zoznam zmenenych / novych suborov od predoslej kompilacie a z nich sa vyrobia .class subory. Ak je nejaky .java subor vymazany, prislusny .class sa pri inkrementalnej kompilacii vymaze tiez. ECJ tiez udrziava komplexny strom zavislosti medzi .java zdrojakmi, cim adresuje napr. pripady, ked sa niektore zmenene subory daju skompilovat a niektore kvoli chybam nie a minimalizuje pocet suborov, ktore treba skutocne prekompilovat. Tato featura bola dost vyznamna v casoch, ked este NetBeans nemal compile-on-save a nesiel cez Ant, ale dnes aj Ant kompiluje len zmenene subory (hoci netusim, ako je to v NetBeans a megaprojektoch). ECJ ma zrejme lepsiu integraciu s reportovanim chyb, mozno sa navesat cez listenery a dostavat kompilacne chyby a varovania, ktore mozno programovo spracovat. Dnes uz samozrejme existuje javax.tools, ale to je len zalezitost JDK1.6+ a predtym to zdaleka nebol standard A ako povedal kolega, Eclipse kompilator ma ine spravanie v pripade chyb: public class Thing { public void getSecret() { return x; } public static void main(String[] args) { new Thing().getSecret() } } ECJ to radostne skompiluje a za behu metoda getSecret() hodi java.lang.Error: Unresolved compilation problem. Javac to odmietne skompilovat. Inak ECJ sa uz od nepamati pouziva v Tomcate na kompilaciu servletov, ktore vzniknu z JSP stranok. RN On 25. 4. 2011 22:17, Libor Jelinek wrote: Já patřím mezi asi tu masu co nikdy nekompilovala ničím jiným, než Oracle javac (taky mi to nejde z pusy, ale snažím se :-)). Nikdy jsem se nesetkal s Blackdown, Ice, gjc apod. kompilátory. A NetBeans používá taky vlastní kompilátor? Když dám v Eclipsech Build, tak mi to přeloží jakým kompilátorem? Když (jako ve zmíněném příkladu z Stackoverflow) Eclipse zkompiluje, ale Sun/Oracle nikoli, tak jak se to pak chová při běhu oproti Sun/Oracle JRE? 2011/4/25 Ladislav Thon ladi...@gmail.com mailto:ladi...@gmail.com Já kupříkladu narazil na rozdíly v kompilaci při volání metody se signaturou používající Enum?, Eclipsí kompilátor to zvládl na jedničku, javac měl problémy, viz diskuze na stackoverflow.com http://stackoverflow.com: http://stackoverflow.com/questions/2220763/java-specific-enums-and-generic-enum-parameters Překladače mohou odvozovat parametrizované typy nad rámec minimálních požadavků. Suní překladač (hádám, že Oraclí začnu říkat nejdřív za pět let) se moc nesnaží, překladač z Eclipsu toho zvládne odvodit víc. Neznamená to, že některý z překladačů je vadný, jenom že o tom lidi moc neví. LT Ovšem pokud používáte Maven, musíte se stejně podřídit standardnímu javac (tedy pokud neexistuje nějaký Maven plugin, který by uměl použít pro kompilaci Eclipse -- a i kdyby existoval, ani bych ho snad nechtěl použít). Martin Schayna On 04/25/2011 02:25 PM, Libor Jelinek wrote: To jsou tedy vlastnosti s ohledem na IDE. Já stejně většinou používám javac z Oraclího JDK přes Ant, tak jsem jen chtěl vědět, zda náhodou není Eclipse compliter třeba několikanásobně rychlější/lepší apod. :-) Díky. Libor Dne 25. dubna 2011 11:17 Filip Jirsák fi...@jirsak.org mailto:fi...@jirsak.org napsal(a): Kompilátor eclipse například umožňuje přeložit i
Re: javac vs. Eclipse - čísla řádků v .class u víceřádkových výrazů
Zrejme to ma prinos pri rychlosti buildov a podla mna pred vekmi to bola zrejme jedine riesenie problemu, ako pouzivat kompilator krizom cez rozne virtualmachiny a rozumne s nim interagovat. A este mi napadlo, ze realne je mozne pouzivat i metody triedy, ktora ma syntakticke chyby (zrejme vhodne vo vyvoji). Inak ja som si toto spravanie kompilatora paradoxne uvedomil az pri pisani predoslych mailov a nikdy mi to neprekazalo. Chybny zdrojak Eclipse sice skompiluje, ale okamzite su cervene podciarknute nespravne konstrukty a vo view Problems vidim prehladne vsetky chyby. Ak spustate projekt s chybami, dostanete hlasku, ci ho naozaj chcete spustit a ide sa. View Problems je vsak standardne nastaveny dost divne, pretoze ukazuje chyby v celom workspace (to je tych Vasich 400 errorov) a i pre mna je to chaos. Ja si standardne nastavujem zobrazovat len problemy v aktualne zvolenom elemente v potomkoch, t. j. ked klikam po packagoch, tak sa mi zobrazuju kumulativne chyby za cely balicek a ked editujem zdrojak, vidim len chyby v nom. Da sa to nastavit vo vlastnostiach viewu, Configure Contents, vytvorit novy Configuration, pomenovat ho, nastavit Scope na ,,Selected item and its children. Volitelne si este mozete vypnut grupovanie a potom vidite presne to, co v NetBeansackej konzole, ale v ovela prehladnejsej forme, pretoze si to mozete triedit, grupovat, filtrovat podla povodu a podobne. Mimo Eclipse asi ECJ nema valny zmysel, resp. nevidim ho. (V buildovacich nastrojoch obvykle ide i tak postupnost clean, build). RN On 26. 4. 2011 17:01, Dusan Msk wrote: Ahoj. 2011/4/26 Robert Novotny robert.novo...@upjs.sk mailto:robert.novo...@upjs.sk A ako povedal kolega, Eclipse kompilator ma ine spravanie v pripade chyb: public class Thing { public void getSecret() { return x; } public static void main(String[] args) { new Thing().getSecret() } } ECJ to radostne skompiluje a za behu metoda getSecret() hodi java.lang.Error: Unresolved compilation problem. Aky to ma realny prinos mimo jsp? Momentalne nedobrovolne prechadzam na eclipse a tato vlastnost eclipse kompilatoru mi nesmierne vadi *1 ( ked sa teda oprostim sprostych slov ). Z netbeans som zvyknuty pri neuspesnom builde hodit zrak do konzoly a hned opravit problem, v eclipse ziadnu konzolu nevidim, zato mam akusi zalozku problems a v nej svieti 400 error-ov :-) Na spolupracu eclipse-maven to takisto neprida, eclipse si tam cosi kdesi chrousta a ja potom na hudsone mozem cumiet ako pako, preco to nefunguje :-) *1 - predpokladam, ze sa to da niekde vypnut, zatial som to neskumal Javac to odmietne skompilovat. Inak ECJ sa uz od nepamati pouziva v Tomcate na kompilaciu servletov, ktore vzniknu z JSP stranok. RN On 25. 4. 2011 22:17, Libor Jelinek wrote: A NetBeans používá taky vlastní kompilátor? AFAIK pouziva z JDK. Když dám v Eclipsech Build, tak mi to přeloží jakým kompilátorem? Když (jako ve zmíněném příkladu z Stackoverflow) Eclipse zkompiluje, ale Sun/Oracle nikoli, tak jak se to pak chová při běhu oproti Sun/Oracle JRE? 2011/4/25 Ladislav Thon ladi...@gmail.com mailto:ladi...@gmail.com Já kupříkladu narazil na rozdíly v kompilaci při volání metody se signaturou používající Enum?, Eclipsí kompilátor to zvládl na jedničku, javac měl problémy, viz diskuze na stackoverflow.com http://stackoverflow.com: http://stackoverflow.com/questions/2220763/java-specific-enums-and-generic-enum-parameters Překladače mohou odvozovat parametrizované typy nad rámec minimálních požadavků. Suní překladač (hádám, že Oraclí začnu říkat nejdřív za pět let) se moc nesnaží, překladač z Eclipsu toho zvládne odvodit víc. Neznamená to, že některý z překladačů je vadný, jenom že o tom lidi moc neví. LT Ovšem pokud používáte Maven, musíte se stejně podřídit standardnímu javac (tedy pokud neexistuje nějaký Maven plugin, který by uměl použít pro kompilaci Eclipse -- a i kdyby existoval, ani bych ho snad nechtěl použít). Martin Schayna On 04/25/2011 02:25 PM, Libor Jelinek wrote: To jsou tedy vlastnosti s ohledem na IDE. Já stejně většinou používám javac z Oraclího JDK přes Ant, tak jsem jen chtěl vědět, zda náhodou není Eclipse compliter třeba několikanásobně rychlější/lepší apod. :-) Díky. Libor Dne 25. dubna 2011 11:17 Filip Jirsák fi...@jirsak.org mailto:fi...@jirsak.org napsal(a): Kompilátor eclipse například umožňuje přeložit i třídu s chybou (chyba v syntaxi v nějaké metodě apod.), jenom místo kódu dané chybné metody vloží vyhození nějaké
Re: javac vs. Eclipse - čísla řádků v .class u víceřádkových výrazů
Informacii o tom kompilatore nie je vela. Prakticky sa vie len to, ze Eclipse Compilator (ECJ) sa hrdi inkrementalnou kompilaciou, co znamena, ze v ramci projektu sa udrziava mnozina zmien v suboroch, ktora nastala od poslednej kompilacie. Pri rekompilacii sa zisti len zoznam zmenenych / novych suborov od predoslej kompilacie a z nich sa vyrobia .class subory. Ak je nejaky .java subor vymazany, prislusny .class sa pri inkrementalnej kompilacii vymaze tiez. ECJ tiez udrziava komplexny strom zavislosti medzi .java zdrojakmi, cim adresuje napr. pripady, ked sa niektore zmenene subory daju skompilovat a niektore kvoli chybam nie a minimalizuje pocet suborov, ktore treba skutocne prekompilovat. Tato featura bola dost vyznamna v casoch, ked este NetBeans nemal compile-on-save a nesiel cez Ant, ale dnes aj Ant kompiluje len zmenene subory (hoci netusim, ako je to v NetBeans a megaprojektoch). ECJ ma zrejme lepsiu integraciu s reportovanim chyb, mozno sa navesat cez listenery a dostavat kompilacne chyby a varovania, ktore mozno programovo spracovat. Dnes uz samozrejme existuje javax.tools, ale to je len zalezitost JDK1.6+ a predtym to zdaleka nebol standard A ako povedal kolega, Eclipse kompilator ma ine spravanie v pripade chyb: public class Thing { public void getSecret() { return x; } public static void main(String[] args) { new Thing().getSecret() } } ECJ to radostne skompiluje a za behu metoda getSecret() hodi java.lang.Error: Unresolved compilation problem. Javac to odmietne skompilovat. Inak ECJ sa uz od nepamati pouziva v Tomcate na kompilaciu servletov, ktore vzniknu z JSP stranok. RN On 25. 4. 2011 22:17, Libor Jelinek wrote: Já patřím mezi asi tu masu co nikdy nekompilovala ničím jiným, než Oracle javac (taky mi to nejde z pusy, ale snažím se :-)). Nikdy jsem se nesetkal s Blackdown, Ice, gjc apod. kompilátory. A NetBeans používá taky vlastní kompilátor? Když dám v Eclipsech Build, tak mi to přeloží jakým kompilátorem? Když (jako ve zmíněném příkladu z Stackoverflow) Eclipse zkompiluje, ale Sun/Oracle nikoli, tak jak se to pak chová při běhu oproti Sun/Oracle JRE? 2011/4/25 Ladislav Thon ladi...@gmail.com mailto:ladi...@gmail.com Já kupříkladu narazil na rozdíly v kompilaci při volání metody se signaturou používající Enum?, Eclipsí kompilátor to zvládl na jedničku, javac měl problémy, viz diskuze na stackoverflow.com http://stackoverflow.com: http://stackoverflow.com/questions/2220763/java-specific-enums-and-generic-enum-parameters Překladače mohou odvozovat parametrizované typy nad rámec minimálních požadavků. Suní překladač (hádám, že Oraclí začnu říkat nejdřív za pět let) se moc nesnaží, překladač z Eclipsu toho zvládne odvodit víc. Neznamená to, že některý z překladačů je vadný, jenom že o tom lidi moc neví. LT Ovšem pokud používáte Maven, musíte se stejně podřídit standardnímu javac (tedy pokud neexistuje nějaký Maven plugin, který by uměl použít pro kompilaci Eclipse -- a i kdyby existoval, ani bych ho snad nechtěl použít). Martin Schayna On 04/25/2011 02:25 PM, Libor Jelinek wrote: To jsou tedy vlastnosti s ohledem na IDE. Já stejně většinou používám javac z Oraclího JDK přes Ant, tak jsem jen chtěl vědět, zda náhodou není Eclipse compliter třeba několikanásobně rychlější/lepší apod. :-) Díky. Libor Dne 25. dubna 2011 11:17 Filip Jirsák fi...@jirsak.org mailto:fi...@jirsak.org napsal(a): Kompilátor eclipse například umožňuje přeložit i třídu s chybou (chyba v syntaxi v nějaké metodě apod.), jenom místo kódu dané chybné metody vloží vyhození nějaké runtime výjimky. K tomu asi sunovský kompilátor nedonutíte. Eclipse (IDE) pak ten přeložený kód používá pro code completion a spol., kde je užitečné, aby jedna chybná metoda nezabránila získávat informace o zbytku třídy a ostatních třídách. Na druhou stranu je potřeba si na to dávat pozor a finální verzi přeložit s plnou kontrolou chyb, aby se ten kód, kde se místo nějaké metody bude vyhazovat výjimka „na řádku 353 chybí středník“ nedostal na produkci. S pozdravem Filip Jirsák Dne 25. dubna 2011 7:43 Libor Jelinek ljeli...@virtage.com mailto:ljeli...@virtage.com napsal(a): A jaký má Eclipse důvod mít vlastní kompilátor? A jaké má Eclipse kompilátor výhody? Oproti standardnímu javac od Oraclu? Libor Dne 19. dubna 2011 15:16 Tomáš Záluský zalu...@centrum.cz mailto:zalu...@centrum.cz napsal(a):
Re: Vytvoreni instance XML objektu z XSD definice
Pokial mate XSD schemu, tak ste vyhrali, lebo presne na to je JAXB: vytvorite triedy, anotaciami poviete, akym elementom zodpovedaju instancne premenne a idete. Niekolko poznamok som si spisal tu: http://ics.upjs.sk/~novotnyr/wiki/Java/SerializaciaADeserializaciaObjektovPomocouJAXB RN On 19. 4. 2011 8:31, Vladislav Krejčiřík wrote: Dobry den, mohl by mi nekdo poradit nejakou open source knihovnu pro generovani XML objektu z XSD definice? Potreboval bych v kodu vytvorit objekt reprezentujici XML zpravu podle daneho XSD a poslat pak pres JMS. Diky za kazdy tip.. -- /**/ Best regards / S pozdravem Vladislav Krejčiřík http://www.vkrejcirik.info
Re: Vytvoreni instance XML objektu z XSD definice
Vezmime si priklad zo slovenciny. Mam gramatiku, ktora hovori, ze slovenska veta ma mat: Podmet - prisudok - predmet. Validacia sa pyta, ci veta ,,Pes zerie granule splna gramatiku. Vy vsak chcete riesit problem typu ,,potrebujem vyrobit slovensku vetu. Ako ma kniznica vediet, ci ma vygenerovat slovensku vetu ,,Pes zerie granule alebo ,,Vyvojar miluje Javu alebo ,,Ja mam psa? Ako sa spominalo, JAXB na zaklade XSD vyrobi triedu s instancnymi premennymi podmet, prisudok, predmet a anotaciami zaisti, ze objekt sa serializuje spravne a teda ze vysledne XML bude splnat schemu. Ako nad tym uvazujem, tak bud chcete mat v kode obmedzene, aby ste nevymysleli nahodou spravu, ktora nedava zmysel (,,Vonku prsi), lenze to vam zaisti prave typovy system, ktory je reprezentovany prave triedami, ktore su vygenerovane v JAXB. Vy hovorite, ze nechcete generovat ziadne triedy ,,ukladane na filesystem, ale mne to nie je jasne. Typicky workflow znamena, ze mam XSD, v kompilacnom kroku z neho vypadnu klasicke Java triedy a tie pouzivam uplne rovnako ako akekolvek ine triedy. Alebo mate situaciu, ked sa XSD meni za behu? RN On 19. 4. 2011 14:11, Vladislav Krejčiřík wrote: ok, mozna jsem to spatne popsal. Zkusim znovu. Ja nechci nic validovat, protoze nemam vlastne ani co. XSD mi definuje strukturu nejake message. Ja bych potreboval takovou messge umet vytvorit, vygenerovat z XSD definice. Myslel jsem ze bych ziskal nejakou objektovou reprezentaci te XML message kde bych nastrkal hodnoty co potrebuju. Potom bych uz jen XML message poslal do fronty. Nevim jestli existuje nejaka knihovna, ktera to umoznuje. Nebo budu muset rucne takovou XML vystavet.. Dne 19. dubna 2011 12:48 Lukas lzap Zapletal luka...@zapletalovi.com mailto:luka...@zapletalovi.com napsal(a): Vlado, myslim ze se tady snazis michat dve veci. DOM a XSD. Prvni jmenovany slouzi k manupulaci s (ted to zjednodusim) XML, druhy je urcen pro popis a kontrolu XML dokumentu. Krome jineho lze namapovat na JavaBeany a ruzne jine struktury zname z pocitacovych jazyku. To co asi chces je nejprve dokument zvalidovat pomoci XSD schematu (doporucuji ruzne tutorialy na netu), a pote jej proste a jednoudse nacist do DOMu a parsovat. Je mozne, ze nejaka DOM knihovna to bude umet udelat v jednom, ale v podstate jsou to dve ruzne veci. Nebo jsem te mozna spatne pochopil. Zkus to reformulovat. http://en.wikipedia.org/wiki/Document_Object_Model http://en.wikipedia.org/wiki/XML_Schema_(W3C) http://en.wikipedia.org/wiki/XML_Schema_%28W3C%29 - Later, Lukas -- View this message in context: http://konference-java-cz.958153.n3.nabble.com/Vytvoreni-instance-XML-objektu-z-XSD-definice-tp2837707p2838272.html Sent from the konference java.cz http://java.cz mailing list archive at Nabble.com. -- /**/ Best regards / S pozdravem Vladislav Krejčiřík http://www.vkrejcirik.info
Re: read() z IO - předávání referencí? To snad ne..
Je to taka Cckoidna filozofia (,,dam ti pointer a ty mi napln jeho obsah), ale principialne s tym nie je problem, kedze pole sa odovzdava referenciou a da sa nan pozerat ako na svojsky druh objektu. Tato metoda robi dve veci: jednak nacitava data do pola a jednak hovori, kolko bajtov sa nacitalo (v navratovej hodnote) a zaroven indikuje -1kou, ze nastal koniec prudu. Neviem ako rozumnejsie by sa obe informacie dali vratit tak, aby API nebolo komplikovane. RN On 4. 4. 2011 12:55, Libor Jelinek wrote: Dobrý den, dnes další jobovka :-) Jak je možné, že read() z potomků InputStream používá něco co by se v jiných jazycích nazvalo výstupní parametry nebo předávání parametrů referencí (ByRef např. ve VB). Java přeci nic takového nemá. Vše je předáváno metodám ByVal, tedy hodnotou. Tak jak to může např. / FileInputStream.read(byte[] b)/ mít v JavaDocu napsáno / @param b the buffer into which the data is read./ Obecně jako nováček bych čekal, že read bude vrácet byte[], nikoli, že mi načtené pole bajtů bude změneno v proměnné předané hodnotou (což není možné přece...). / /Když se podívám na zdrojáky, tak se nedostanu dále, než že to využívá JNI v signaturách metod, např.: /private native int readBytes(byte b[], int off, int len) throws IOException;/ / /Přiznávám, že JNI neznám a nikdy jsem nepoužíval. To je díky tomu? Nebo co je to za magii? :-) Díky Libor
Re: read() z IO - předávání referencí? To snad ne..
Presne. A) Mozete sa na to divat ako Cckar Vsetko sa odovzdava hodnotou: a) ak su to primitivne typy, tak je to zrejme b) ak su to objektove typy, tak hodnotou odovzda adresa (pointer na objekt), lenze s adresou nemozete robit pointerovu aritmetiku. Presmerovanie pointra v metode nema ziaden dopad na samotny parameter, kedze ten sa do skutocneho parametra nakopiroval hodnotou c) pole je prakticky objektovy typ B) Mozete sa na to divat ako Java a) primitivne typy idu hodnotou b) objektove typy idu referenciou, co prakticky znamena, ze pre ucely manipulacie sa stotoznuje pointer na objekt so samotnym objektom. Ak mate objekt v parametri metody, zmeny jeho atributov/vlastnosti su vidiet aj z volajucej metody, ale ak do parametra v ramci metody priradite referenciu na iny objekt, tato zmena sa mimo metody neprejavi. public static void handleBuffer(byte[] data) { data = new byte[] {3, 1, 5}; } public static void main(String[] args) { byte[] buffer = new byte[] {2, 4, 5}; handleBuffer(buffer); System.out.println(Arrays.toString((buffer))); // vypis 2, 4, 5 } On 4. 4. 2011 13:48, Libor Jelinek wrote: Takže dělá prostě něco jako toto: static void zmenPoleBajtu(byte[] b) { b[0] = 'd'; b[1] = 'e'; b[2] = 'f'; } Díky! Už jsem doma! Proč jste to neřekl hned? :-) Ono je to s těmi referencemi poměrně složité. Alespoň pro mojí hlavu :-) A jak tu někdo říkal tak asi hodně programátorů prostě jen používá a nepřemýšlí co se přesně děje. A čím víc umí Springů, J2EE a všeho podobného tím víc je možná zarážející, že ty úplné nej low-level základy pokulhávají. Jako vysocí matematici nemějí pak spočítat, kolik jim májí vrátit v krámě :-) Děkuji pane Novotný za vysvětlení! Libor Dne 4. dubna 2011 13:42 Robert Novotny robert.novo...@upjs.sk mailto:robert.novo...@upjs.sk napsal(a): Ona nemeni pole, ona meni prvky tohto pola. On 4. 4. 2011 13:33, Libor Jelinek wrote: Děkuji pane Thone, to tedy znamená, že znovu nechápu jak může read(byte[] b) z např. FileInputStream měnít hodnotu parametru, když je mu předána nikoli reference, ale nový objekt se stejnou hodnotou jako měl (má) mnou předávaný... Viz můj předchozí nebo váš úryvek kódu. Libor 2011/4/4 Ladislav Thon ladi...@gmail.com mailto:ladi...@gmail.com nikoliv, naopak, vše je předáváno referencí. Ne, původní pisatel to má správně, vše se předává hodnotou -- primitivní i referenční typy. Tohle je pekelně rozšířený omyl. Předávání parametrů odkazem (referencí) by znamenalo, že můžete tu původní proměnnou vyměnit, asi takhle: void caller() { String a = a; callee(a); // !!! co je v proměnné a? } void callee(String param) { String b = b; param = b; } Kdyby se parametr param v metodě callee předával referencí, pak by na konci metody caller platilo b.equals(a). Pokud se dobře pamatuju, v C# by to takhle fungovalo, kdyby ten parametr byl deklarovaný ref String param. Jenže referenční typy se v Javě předávají hodnotou -- dostanete kopii reference, takže můžete změnit _stav_ objektu (v ukázce ne, String je neměnitelný), ale nemůžete _vyměnit_ ten objekt jako takový. Pro pole platí totéž, jsou to taky referenční typy (dalo by se říct, že to jsou vlastně taky objekty, a nebyla by to úplná lež). LT
Re: read() z IO - předávání referencí? To snad ne..
Eclipse ma defaultne tiez nastaveny warning, ak sa vyvojar pokusa priradit rovno do premennej, ktora je parametrom. On 4. 4. 2011 14:37, Ondřej Fafejta wrote: 2011/4/4 Robert Novotnyrobert.novo...@upjs.sk: Este by som to vylepsil, aby bolo vidiet efekt: I. Primitivy hodnotou: public static void zlyPokusOZmenuParametra(int i) { ++i; } int i = 1; zlyPokusOZmenuParametra(i); System.out.println(i == + i); // 1 II. Objekty referenciou public static void zmenDate(Date d) { d.setTime(0L); } Date date = new Date(); System.out.println(date == + date);// v case mojeho spusteni ... date == Mon Apr 04 14:15:27 CEST 2011 zmenDate(date); System.out.println(date == + date);// date == Thu Jan 01 01:00:00 CET 1970 jj. tento příklad je výstižnější ... (návratový typ je zbytečně matoucí ;-)) Jinak ještě doplním, že findbugs hlásí chybu, když např. entita má getter pro parametr, u kterého můžeme přepsat hodnotu bez toho abychom volali setter... http://findbugs.sourceforge.net/bugDescriptions.html#EI_EXPOSE_REP např. (píšu z hlavy - určitě někde budu mít překlep ;)) public class NejakaEntita implements Serializable { private Date createdAt; public Date getCreatedAt() { return createdAt; } } Fafi
Re: Spring JDBC template
Orezany zrejme neexistuje, kedysi som sa pokusal to osekat (lebo JdbcTemplate je vyborna trieda), ale ono je to zavislostami prepojene s ostatnymi styrmi (piatimi?) modulmi. Otazka je, ci mate naozaj problem s tym, ze su to styri JARy, alebo ci ide o nejaku aplikaciu, kde je kanon na vrabce tahat 4MB zavislosti kvoli pristupu k databaze. RN On 24. 3. 2011 15:26, Ondra Medek wrote: Ahoj, libi se mi Spring JdbcTemplate jako zjednoduseni pristupu k DB. Ale do projektu kvuli tomu musim dat 4 JARy ze Springu. Existuje nejaky orezany Spring JdbcTemplate nebo neco podobneho maleho a jednoducheho? Dik Ondra Medek
Re: Rich frontend gwt,zk,flex, pripadne iny
On 9. 3. 2011 17:06, Dusan Msk wrote: Ad Wicket - skutocne je vhodnym kandidatom na tento typ ulohy? ( nerypem, pytam sa ) To zalezi na tom, co zadavatel rozumie pod RichUI: ci ide o komplexne formulare s mnozstvom komponentov a volitelnym Ajaxom alebo o nieco este dynamickejsie. Robert Novotny
Re: Classloader v tomcatu
Ta bodka je nejaka podozriva, co tym chcete dosiahnut? Chcete ziskat aktualny adresar? RN On 24. 2. 2011 13:31, Tomas Bezdek wrote: ahoj, v jedne sve tride mam volani EPaymentService.class.getResource(.), ktere mi pri debugovani v eclipsech vraci spravnou cestu ke tride (file:/...). kdyz ale toto volani probehne v aplikaci spustene na tomcatu, vraci null. nevite nekdo cim by to mohlo byt zpusobene? dik tomas
Re: Parsing HTML stránek
Pravda, ide primarne o deserializaciu. Plus, povodny dopyt bol na desktopovu aplikaciu (ak som to spravne pochopil), kde pouzivatel vydrzi to parsekundove ,,Loading On 20. 2. 2011 23:30, Oto Buchta wrote: 2011/2/20 Robert Novotnyrobert.novo...@upjs.sk: Preco si myslite, ze Java serializacia bude rychlejsia nez serializacia do textaku? (Ved prirodzenou formou serializacie XML je text) Tady podle mne nejde ani tak o serializaci, jako spis deserializaci. Podla mna si urobte kratky test na velkej stranke (povedzme 10MB) a zistite, ci je to pomale alebo nie, lebo mam pocit, ze zatial riesite predcasnu optimalizaciu sposobom, ktory moze zredukovat pouzitelne technologie na prazdnu mnozinu :-) Naprosty souhlas. Pokud nebude kazdou vterinu stovka pozadavku, ale spis jeden za nekolik vterin, vubec bych to neresil. On 19. 2. 2011 14:58, Dušan Rychnovský wrote: Zkoumal jsem i http://about.validator.nu/htmlparser/ a zdá se, že serializaci rovněž nepodporuje. 2011/2/19 Dušan Rychnovskýgeraltzri...@gmail.com Dobrý den, zkoumal jsem trochu parser JTidy a zdá se být dobrý, ale chybí mi jedna věc. Metoda pro parsování HTML stránky vrací objekt org.w3c.dom.Document, který neimplementuje rozhraní Serializable. Ve svém programu nad HTML stránkou vždy postavím DOM a následně si tvořím pomocný strom, jehož vrcholy obsahují reference na některé uzly stromu DOM a uchovávají o nich další informace. Celou tuto strukturu chci při ukončení programu serializovat tak, aby se zachovaly vazby na uzly stromu DOM (potažmo na příslušné tagy HTML stránky). Existuje nějaký způsob, jak donutit org.w3c.dom.Document k takovéto serializaci? Tyto pomocné informace nemůžu ukládat do HTML stránky a DOM stavět vždy při spuštění programu znovu, protože program má uchovávat několik desítek stránek a jejich opětovné parsování při spuštění programu by bylo asi pomalé (počítám, že deserializace struktury z disku bude o mnoho rychlejší). Děkuju Dušan Rychnovský Dne 19. února 2011 11:15 Michal Bernhardmbernh...@atlas.cz napsal(a): Muzete prosim vsichni, co jste tu psali, ze jste to taky resili, napsat konkretni usecase? Zajimalo by me proc vznikne takovy pozadavek a zaroven a jestli se to neda resit elegantneji treba kombinaci firefox/chrome + greasemonkey + treba jquery. Dekuji :) Michal http://twitter.com/#!/michalb_cz 2011/2/18 Lukas lzap Zapletalluka...@zapletalovi.com Presne tohle jsem resil zhruba pred 5 lety. A vyresil. Knihovna JTidy - umi zpracovat skoro vsechno. Je to vsezravec. Funguje tam, kde si ostatni parsery lamou doslova zuby. Jestli je rychla nevim. Jestli zvladne nejnovejsi XHTML nebo HTML5 take nevim. Ale na mem projektu fungovala skvele (HTML 4). Napiste jak jste pochodil. LZ - Later, Lukas -- View this message in context: http://konference-java-cz.958153.n3.nabble.com/Parsing-HTML-stranek-tp2526109p2526552.html Sent from the konference java.cz mailing list archive at Nabble.com.
Re: Parsing HTML stránek
Preco si myslite, ze Java serializacia bude rychlejsia nez serializacia do textaku? (Ved prirodzenou formou serializacie XML je text) Interfejs org.w3c.dom.Document nie je serializable, pretoze to by znamenalo, ze vsetky implementacia DOMu by museli vracat Serializable objekty... a to by bola dost silna a zbytocna poziadavka. To zalezi od toho, ci implementatori vyhlasili svoje objekty za Serializable, ale to by chcelo pozriet do zdrojakov. Podla mna si urobte kratky test na velkej stranke (povedzme 10MB) a zistite, ci je to pomale alebo nie, lebo mam pocit, ze zatial riesite predcasnu optimalizaciu sposobom, ktory moze zredukovat pouzitelne technologie na prazdnu mnozinu :-) On 19. 2. 2011 14:58, Dušan Rychnovský wrote: Zkoumal jsem i http://about.validator.nu/htmlparser/ a zdá se, že serializaci rovněž nepodporuje. 2011/2/19 Dušan Rychnovský geraltzri...@gmail.com mailto:geraltzri...@gmail.com Dobrý den, zkoumal jsem trochu parser JTidy a zdá se být dobrý, ale chybí mi jedna věc. Metoda pro parsování HTML stránky vrací objekt org.w3c.dom.Document, který neimplementuje rozhraní Serializable. Ve svém programu nad HTML stránkou vždy postavím DOM a následně si tvořím pomocný strom, jehož vrcholy obsahují reference na některé uzly stromu DOM a uchovávají o nich další informace. Celou tuto strukturu chci při ukončení programu serializovat tak, aby se zachovaly vazby na uzly stromu DOM (potažmo na příslušné tagy HTML stránky). Existuje nějaký způsob, jak donutit org.w3c.dom.Document k takovéto serializaci? Tyto pomocné informace nemůžu ukládat do HTML stránky a DOM stavět vždy při spuštění programu znovu, protože program má uchovávat několik desítek stránek a jejich opětovné parsování při spuštění programu by bylo asi pomalé (počítám, že deserializace struktury z disku bude o mnoho rychlejší). Děkuju Dušan Rychnovský Dne 19. února 2011 11:15 Michal Bernhard mbernh...@atlas.cz mailto:mbernh...@atlas.cz napsal(a): Muzete prosim vsichni, co jste tu psali, ze jste to taky resili, napsat konkretni usecase? Zajimalo by me proc vznikne takovy pozadavek a zaroven a jestli se to neda resit elegantneji treba kombinaci firefox/chrome + greasemonkey + treba jquery. Dekuji :) Michal http://twitter.com/#!/michalb_cz http://twitter.com/#%21/michalb_cz 2011/2/18 Lukas lzap Zapletal luka...@zapletalovi.com mailto:luka...@zapletalovi.com Presne tohle jsem resil zhruba pred 5 lety. A vyresil. Knihovna JTidy - umi zpracovat skoro vsechno. Je to vsezravec. Funguje tam, kde si ostatni parsery lamou doslova zuby. Jestli je rychla nevim. Jestli zvladne nejnovejsi XHTML nebo HTML5 take nevim. Ale na mem projektu fungovala skvele (HTML 4). Napiste jak jste pochodil. LZ - Later, Lukas -- View this message in context: http://konference-java-cz.958153.n3.nabble.com/Parsing-HTML-stranek-tp2526109p2526552.html Sent from the konference java.cz http://java.cz mailing list archive at Nabble.com.
Re: Parsing HTML stránek
Typicka uloha: na serveri stahujete periodicky HTML stranky a automaticky z nich extrahujete relevantne udaje. Technologie prehliadaca vam v tom nepomozu, lebo to neviete automatizovat a na strane servera si to zrejme nespustite. RN On 19. 2. 2011 11:15, Michal Bernhard wrote: Muzete prosim vsichni, co jste tu psali, ze jste to taky resili, napsat konkretni usecase? Zajimalo by me proc vznikne takovy pozadavek a zaroven a jestli se to neda resit elegantneji treba kombinaci firefox/chrome + greasemonkey + treba jquery. Dekuji :) Michal http://twitter.com/#!/michalb_cz http://twitter.com/#%21/michalb_cz 2011/2/18 Lukas lzap Zapletal luka...@zapletalovi.com mailto:luka...@zapletalovi.com Presne tohle jsem resil zhruba pred 5 lety. A vyresil. Knihovna JTidy - umi zpracovat skoro vsechno. Je to vsezravec. Funguje tam, kde si ostatni parsery lamou doslova zuby. Jestli je rychla nevim. Jestli zvladne nejnovejsi XHTML nebo HTML5 take nevim. Ale na mem projektu fungovala skvele (HTML 4). Napiste jak jste pochodil. LZ - Later, Lukas -- View this message in context: http://konference-java-cz.958153.n3.nabble.com/Parsing-HTML-stranek-tp2526109p2526552.html Sent from the konference java.cz http://java.cz mailing list archive at Nabble.com.
Re: generics - cast problem
Unchecked cast je varovanie, ze pretypovanie nie je v case kompilacie bezpecne a v case behu mozu vybiehat ClassCastException. Ak ste si vedomi, ze take nieco za behu nenastane, anotaciou @SuppressWarnings(unchecked) na metode zrusite ten warning. Popravde nechapem to pretypovanie na Collection. Kedze loadCollectionByQuery vracia Collection a getAllZipCodes() vracia tiez Collection, naco robite return (Collection) loadCollectionByQuery() ? Okrem toho, v Jave 5 a novsej by sa idealne mali pouzivat typovane kolekcie s generikami. On 7. 2. 2011 10:07, jerzy burzek wrote: Zdravim konferenciu, skusam sa hrat s generics a narazilo som na jeden problem, ktoremu velmi nerozumiem. Skusim nacrtnut: mam hierarchiu tried (JPA, ale to nie je asi podstatne) BaseEntity ZipCode extends BaseEntity Login extends BaseEntity atd potom mam abstraktnu triedu BaseManager, ktora implementuje metodu pre nacitanie kolekcie z databazy: protected Collection loadCollectionByQuery(Class entityClass, String query, Object[] params) throws DBException. a dalsiu triedu LOVManager, a tu mam metodu public CollectiongetAllZipCodes() throws DBException a tu je problem: ak napisem nieco taketo: public CollectiongetAllZipCodes() throws DBException return (Collection) loadCollectionByQuery(ZipCode.class, select z from ZipCode z, null); } prekladac hlasi warning (unchecked cast...), a ked si vypisem po caste hodnoty v kolekcii, su tam instancie ZipCode, ale hodnoty atributov id a stamp (ktore su v BaseEntity) su null (???) ked naspisem toto: public CollectiongetAllZipCodes() throws DBException Collection tmp = loadCollectionByQuery(ZipCode.class, select z from ZipCode z, null); Collectionret = (Collection) tmp; return tmp; } prekladac sice tiez hlasi warning, ale instancie ZipCode su uz ok (id aj stamp su != null) Co mi unika?
Re: jetty vs. Double.parseDouble
Tomcat 6.x i 7.x je uz opraveny. On 3. 2. 2011 20:14, Jaroslav Barton wrote: Aplikace nasazené na kritických místech nebo ty jejichž provoz je kryt nějakým SLA to s velkou pravděpodobností řešit budou. Zbytek se na to vybodne nebo než vydají záplatu, tak to Oracle opraví (a ještě předtím se IMO objeví oprava v OpenJDK). Jarek Oto Buchta píše v Čt 03. 02. 2011 v 20:00 +0100: Chapu to tak, ze kazda aplikace, ktera v sobe obsahuje praci s java.lang.Double, bude muset kvuli bezpecnosti vyresit tuto chybu? To si snad nekdo dela legraci, ne? Dne 3. února 2011 18:34 Robert Novotnyrobert.novo...@upjs.sk napsal(a): Tomcat toto pouziva v parsovani Accept-Language hlavicky, ale ako pozeram, oprava je uz zakomitovana, takze bude asi update aj oboch Tomcatov - aj sestkoveho, aj sedmickoveho. Robert Novotny On 3. 2. 2011 18:22, Ondra Medek wrote: Zajimavy bug. Nenapada mne, proc by zrovna HTTP server mel resit tento bug - to spise zavisi na aplikaci. Jinak zkus progrepovat zdojaky jetty na parseDouble a new Double. Spise nez Jetty by to mohlo ovlivnit frameworky nad ruznou komunikaci s cimkoliv (SQL - Hibernate, iBatis; JSON, Excel, WS apod.) 2011/2/3 Lucie Rut Bittnerovalu...@mathan.cz: Dobry den, chtela bych se ohledne chyby parsovani double (http://www.exploringbinary.com/java-hangs-when-converting-2-2250738585072012e-308/) zeptat, zda jste nahodou nekdo nezjistoval, jak je na tom s odolnosti vuci teto chybe jetty. S pozdravem Lucie Rut Bittnerova
Re: Off Topic - Oracle/Java/Linux zkratka ala LAMP?
JEE? :-) Problem je ten, ze na rozdiel od LAMP zrejme neexistuje ,,typicka Java konfiguracia(tm), lebo namiesto Tomcatu mozete mat JBoss alebo WebSphere alebo Glassfish (alebo ktorykolvek iny (aplikacny) server)) a namiesto Oraclu ktorukolvek z relacnych databaz, kde ich je na vyber milion a pat. RN On 21. 1. 2011 9:51, Tomas Hubalek wrote: Zdar, Zkratku LAMP (Linux, Apache, MySQL, Php) asi zna kde kdo. Netusite, jestli neexistujepodobnezavedena zkratka pro podobne klasickou konfiguraci Linux/Java/Oracle/Tomcat? Neco jako LOJT ;-) ? Dik Tom
Re: [SQL] List/array v 1 resultu
MySQL a SQLite ma agregacnu funkciu GROUP_CONCAT(), ktora robi to, co potrebujete, ale neviem ako su na tom ine databazy. http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat RN On 10. 9. 2010 13:54, Petr Prikryl wrote: Dobre poledne, snazim se z DB vytahnout IP uzivatelu, ale uzivatel ma vic IP, tedy pro 1 uzivatele se mi vrati vice zaznamu a ja to musim v jave slepovat do listu. Snazil jsem se vygooglit neco rozumnejsiho ale bohuzel se asi ptam google spatne (list, array a fetch jsou moc obecna slova...). Pouzivam JDBC (hibernate je nevhodny protoze delam pouze RO a spojuji 10 tabulek). Potreboval bych neco jako: SELECT uzivatel, LIST(ip) FROM uzivatel LEFT JOIN ip ON ip.uz_id = uzivatel.id; Za kazdou radu predem dekuji. PP
Re: rychlost instanceof x interface x key/ID
Mna napr. zaujala poznamka z keynotu Josha Blocha z terajsieho Java Language Summitu: In some circumstances it turns out that is faster than in Java, because a will short curcuit, which means it will branch. The single ampersand will always execute both sides, which means the CPU can pipeline both of them to execute at the same time. Ale originalna prezentacia nie je este k dispozicii, takze nie je mi celkom jasne, ako sa to myslelo. RN On 2. 8. 2010 20:57, Ondra Medek wrote: Takze kdyz se nekomu podari mikrooptimalizace typu prochazeni pole odzadu je rychlejsi, v dalsim buildu JDK uz to nemusi fungovat. Ja bych jen doplnil konkretne k teto optimalizaci: ono to nemusi byt rychlejsi vzdy. Zalezi, nejen na JVM, ale i jaka data se prochazi, typu cache a procesoru, a mozna dalsich faktorech. Tedy zrovna tato optimalizace je IMHO obecne naprosto zbytecna.(Mne osobne se lepe ctou for cykly od 1 do N.) Dobra je leda tak pro nejaky konkretni pripad, kde se opravdu nameri zrychleni. Tim nechci spoustet flame na tema rychlost prochazeni pole. Jen chci uvezt konkretni pripad, kdy je takova mikrooptimalizace zbytecna. Zpatky k tomu instanceof: pouziva se to hojne v equals metodach, tedy bych se o rychlost nebal. Pravdepodobne se v kazde aplikaci vola tolikrat, ze nejake dalsi pridani uz nema vyznam. (kdyby to byla nejaka brzda, tak by se jiste nasel nekdo, kdy by se snazil equals implementovat jinak). P.S. pro Otu: ja jsem take z HPC sveta.
Re: rychlost instanceof x interface x key/ID
V tomto pripade by som sa zamyslel nad konkretnym praktickym prikladom a tym, ci sa metody getA() a getB() nedaju vyriesit polymorfizmom. Vo vasej metode doId() je problem v nerozsiritelnosti, akonahle by pribudla trieda C (C implements Value), v metode doId() musite dodat novu vetvu do podmienky if. V pripade polymorfizmu (t. j. vasa metoda doInterface()) je vyhoda, ze nic take robit nemusite, len vyrobite triedu C a prekryjete prislusnym sposobom getValue(). Inak v pripade komplexnych hierarchii tried, kde naozaj treba pouzivat aj dedicnost, aj sa dopytovat na typ triedy, existuje kompromis, ktory je v API pre DOM (Document Object Model): tam existuje interfejs Node, je implementovany velkym mnozstvom tried (napr. Element implements Node, Document implements Node). Kazda takato trieda prekryva metodu getNodeType(), ktora vracia jedinecne cislo zodpovedajuce typu uzla. Instancie typu Element maju getNodeType() == 1, instancie Document-u maju getNodeType() == 9. Takto mozno porovnanim getNodeType() v podmienke zistit typ objektu aj inak nez cez instanceof a pretypovanie. RN On 27. 7. 2010 10:01, Ondra Medek wrote: Mno jestli tady ten vykon neovlivnuje vice ta prace s ArrayList nezli sledovane operace. Protoze je list velky, pak se projevu kesovani, GC, apod. Spise bych zkusil male pole, ktere se alokuje jen 1x cca treba jen 10 elementu, a to pole pak prochazet vicekrat. Anebo mit jen jeden element? 2010/7/27 Pavel Nemecneme...@gmail.com: Dobry den, resim takovy maly problem toho co je lepsi pouzivat pro rozliseni typu objektu. Ja jsem zastance pouzivat interface a nechat compilator/runtime aby si vybral, kterou metodu zavola. Muj oponent pochazi vice z Ccka a je mu blizsi pouzivat klice, pripadne instanceof. Ja jsem mel vzdy za to ze instanceof je velmi pomale a nedoporucuje se, nicmene jsem se docetl, ze to jiz davno neplati. Udelal jsem si maly test, kdy zjistuji zda je objekt daneho typu na zaklade volani instanceof interface - nezjistuji, pouze volam interface metodu na zaklade objekt.getID() + pretypovani. Myslel jsem ze interface bude s prehledem nejrychlejsi, nicmene tomu odpovida jen maly pocet volani (volam v cyklu a zjistuji jestli objekt v listu je daneho typu) pro 20 000 polozekinstanceof: 2 item took 25milsec, and result is 0 (should be 0) interface: 2 item took 4milsec, and result is 0 (should be 0) id: 2 item took 23milsec, and result is 0 (should be 0) pro vysi pocet pak rychlost interface jiz kleas a napriklad pro 20M instanceof: 2000 item took 284milsec, and result is 0 (should be 0) interface: 2000 item took 380milsec, and result is 0 (should be 0) id: 2000 item took 188milsec, and result is 0 (should be 0) Zdrojak je nejednodusi mozny, viz: http://pastebin.ca/1909107 je tohle znama vec, a je tedy skutecne jedno zda(co se tyce rychlosti) pouziji instance of misto interface? Diky, Pavel
Re: extends ENUM
Zdravim public enum TrackerEventType {...} nestaci? Mozno by bolo dobre povedat blizsie, co chcete. Inak dedicnost medzi enumami je zakazana. On 25. 6. 2010 15:56, Ivan Polak wrote: zdravim konferenciu, prerabam jeden stary projekt a narazil som tam na konstrukciu: public class EventType extends Enum { } co samozrejme dava v jave 1.6 nasledovnu chybu The type TrackerEventType may not subclass Enum explicitly nerobil niekto uz nieco podobne, ako najlepsie prepisat dedenie z ENUM dakujem Ivan
Re: Swing a uvolnovani Window
Je tam extra sekcia Responding to Window Closing Events :-) By default, when the user closes a frame onscreen, the frame is hidden. Although invisible, the frame still exists and the program can make it visible again. If you want different behavior, then you need to either register a window listener that handles window-closing events, or you need to specify default close behavior using the |setDefaultCloseOperation| method. You can even do both. Pod tym traktat ku konstantnam. A hej, suhlasim, priklady su casto neuplne, napr. JDBC je povestne zlymi prikladmi, ktore malokedy zatvoria vsetky connectiony, resultsety a statementy poriadne. Ludia to potom kopiruju rovno do kodu, a potom to robi podivnosti. On 27. 1. 2010 16:34, Ondra Medek wrote: Ale chapem, ze casto clovek vpadne do technologie a neexistuje priestor / cas / prilezitost na tutorialove upozornenia. Zadne tutorialove upozornenia nevidim: http://java.sun.com/docs/books/tutorial/uiswing/components/dialog.html http://java.sun.com/docs/books/tutorial/uiswing/components/frame.html I nektere priklady jinde na webu jsou spatne: http://www.java2s.com/Code/Java/Swing-JFC/Createsimpleaboutdialog.htm A JInternalFrame ma default close operation jako DISPOSE, aby to nebylo tak jednoduche :-) Nechci zacit flame, ale treba C# to ma vyresene lepe. Jako nektere dalsi veci, jak uz zde bylo zmineno.
Re: Swing a uvolnovani Window
To je naozaj problem v tom, ze niekto si neprecita poriadne dokumentaciu, alebo niekto pred nim si neprecita poriadne dokumentaciu a problem sa tiahne. Ved podla mna uz prvy priklad prace so Swingom, kde si len zobrazite prazdne okno, vas donuti pouzit EXIT_ON_CLOSE. Inak zistite, ze po desiatich spusteniach mate desat skrytych, ale nedisposenutych okien a teda desat neviditelnych spustenych aplikacii. (U mna na cviceniach sa to prejavilo evidentne: ludom zacal zdochynat Eclipse :-)). Ale chapem, ze casto clovek vpadne do technologie a neexistuje priestor / cas / prilezitost na tutorialove upozornenia. Automagicke disposovanie okien je presne taky pripad ako Connectiony, ResultSety a Statementy, a presne taky isty priklad ako zatvaranie java.io.OutputStreamov ci Writerov. Nie je to teda ziadna rarita. Ak vznikaju problemy, tak presne preto, ze vznika dojem, ze Java upratuje vsetko, vzdy a vsade, a dokonca aj tam, kde je to vyslovne v zodpovednosti programatora. On 26. 1. 2010 21:26, Ondra Medek wrote: Aha. Pak tedy každý expert musí nastudovat, která metoda mu pod rukou zdroje uklízí a která ne? To mi nepřijde příliš šťastné. Lepsi kdyz to studuje expert, nez amater. Nakonec expert by to mozna napsal lepe v C++. Proto je Java tak oblibena, ze se v ni chyb da delat mene a jsou snadneji odhalitelne. Situace je jina, pokud mate aplikaci, kterou od zacatku do konce vyvijite sam nebo aspon nad vyvojem mate dohled. V beznem zivote ale na vas spadne existujici aplikace (nebo lepe nekolik aplikaci), na ktere se behem radu let vystridala rada lidi s ruznym stupnem znalosti Javy, Swingu (a pripadne hafo dalsich knihoven). Pak jste vdecny za co nejjednodussi programove konstrukce, ve kterych nelze udelat chyba.
Re: SQLite
HSQLDB je velmi elegantna databaza, podporuje dost velku mnozinu SQL, JAR je maly, umoznuje rozlicne sposoby embeddovania, cistu in-memory databazu a pod. Databazu uklada v podobe citatelneho textoveho skriptu do suboroveho systemu, ktory je viditelny (so sifrovanim nemam skusenosti.) Derby ma zase vyhodu, ze syntax sa do velkej miery kryje z IBM DB2, migrovali sme data z DB2 do Derby bez akychkolvek problemov. Naco potrebujete kryptovat data? On 18. 1. 2010 11:32, Petr Jonas wrote: Dobrý den, chtěl bych se zeptat, jaké máte zkušenosti s SQLite, chci k desktopovému projektu preidelat DB, jednoduchou, ze mi pripadne zbytecne instalovat mysql, či sostgre a pod. a jak je to s šifrováním dat? a nejsou jednoduše k přečtení, nevíte někdo?. děkuji předem za odpověď.
Re: SQLite
Ono mam neodbytny pocit, ze akonahle su data ulozene len u klienta, tak skor ci neskor sa najde nejaky vtipalek, co sa ich bude chciet snazit prelomit. V tomto ohlade ma hsqldb naozaj nevyhodu -- oni totiz security vobec neriesia, dokonca aj pouzivatelia (loginy a hesla) su tusim len pro forma. RN On 18. 1. 2010 16:57, Ondra Medek wrote: Jestli to dobre chapu, tak se jedna o standalone aplikaci, tedy sifrovaci algoritmus i klic bude soucasti aplikace, tedy uzivatel k nim bude mit pristup. Tedy asi spise nez o nejakou 100% bezpecnost vam asi jde o jakesi zamlzeni, aby to nemohl menit kazdy BFU. Pak bych zvazil, jestli nestaci neco primitivniho na aplikacni vrstve. Napr. vysledek = vysledek * 31 - 127, apod. 2010/1/18 Petr Jonasfoxovic.vel...@seznam.cz: Zdravím děkuji za info, no, nerad bych třeba aby uživatel věděl co a jak tam je uložené, , a popřípadě natvrdo editoval v případě výsledků zápasů. jde zatím jen o testovací prográmek, ale kdo ví. Petr Jonas Robert Novotny píše v Po 18. 01. 2010 v 13:22 +0100: HSQLDB je velmi elegantna databaza, podporuje dost velku mnozinu SQL, JAR je maly, umoznuje rozlicne sposoby embeddovania, cistu in-memory databazu a pod. Databazu uklada v podobe citatelneho textoveho skriptu do suboroveho systemu, ktory je viditelny (so sifrovanim nemam skusenosti.) Derby ma zase vyhodu, ze syntax sa do velkej miery kryje z IBM DB2, migrovali sme data z DB2 do Derby bez akychkolvek problemov. Naco potrebujete kryptovat data? On 18. 1. 2010 11:32, Petr Jonas wrote: Dobrý den, chtěl bych se zeptat, jaké máte zkušenosti s SQLite, chci k desktopovému projektu preidelat DB, jednoduchou, ze mi pripadne zbytecne instalovat mysql, či sostgre a pod. a jak je to s šifrováním dat? a nejsou jednoduše k přečtení, nevíte někdo?. děkuji předem za odpověď.
Re: Zkušenosti s Apache Wicket
Tym som chcel povedat, ze kym clovek pride na best practices, predide chybam, uchopi filozofiu atd, tak to chvilu trva. Wicket mal u mna prave problem v tych takych ,,soft znalostiach. Napr. v prvom hobby projekte som pchal objekty rovno do komponentov, lebo som nechapal modely a radsej som ich obchadzal, alebo som mal strasny problem so strankovou navigaciou. Bola tam metoda na navrat na stranku, ktora brala instanciu stranky, a samozrejme sa mi potom do sessnu ukladal cely strom stranok, ktore sa navyse nerefreshovali z databazy pri novom requeste (lebo drzali objekty, ktore som do nich nahadzal rovno), a dospel som do stavu, ze sa projekt rozpadol :-) To vsak bolo za cias starej verzie, ked neboli ziadne knihy a jedina dokumentacia bola Wiki, a i tu som musel neraz editovat. (Kedze obsahovala iinformacie spred dvoch verzii.) Nove verzie osetrili niektore okrajove priklady a ked pochopite modely, je to v pohode. S AJAXovymi komponentami som ale nerobil, takze neviem povedat. Aha a este pozitivum: wicket mal niekedy velmi velmi dobry mailing list, poslali ste spravu a za den ste mali odpoved. Neviem, ci je to este i v sucasnosti tak (aktivita dost opadla), ale vtedy to bol raj na zemi. RN On 18. 11. 2009 21:51, Petr Fejfar wrote: Dne Wed, 18 Nov 2009 14:06:42 +0100 Robert Novotny robert.novo...@upjs.sk napsal/-a: Uciaca krivka je intenzivne strma a problem je v tom, ze v behu vidiet Tim myslis, ze se to da naucit rychle nebo ze se to uci pomalu? (viz treba http://en.wikipedia.org/wiki/Learning_curve The familiar expression steep learning curve may refer alternately to rapid learning that is easy, or especially hard, or to steady progress that is increasingly difficult [...] Originally it referred to quick progress in learning during the initial stages [...] Over time, a different use of the metaphor has become common, in which a steep learning curve means that something requires a great deal of effort to learn pf
Re: Zkušenosti s Apache Wicket
Robil som v tom hobby projekt v kombinacii s Hibernate. Uciaca krivka je intenzivne strma a problem je v tom, ze v behu vidiet dve verzie: 1.3 a cerstvu 1.4, ktora pouziva generika. Dokumentacia miestami pokrivkava, a mnozstvo knih je stavane na 1.3kovu verziu. Ako komponentovy framework mi to prislo vyhodne, ale az od chvile, ked som pochopil niektore zakladne principy, ktore nie su velmi dobre propagovane. Treba pochopit modely a treba si uvedomit, ze LoadableDetachableModel je v mnohych percentach pripadov nutnost (inak sa data ukladaju do sessnu, data v komponentoch sa zahadne nerefreshuju, hoci to je zamer atd). Na prvy pohlad tiez posobi odstrasujuco mnozstvo inline subclassovania tried, co nie je v Jave velmi obvykle, ale vo Wickete je to takpovediac sposob myslenia. A pozor si treba dat na tu dvojitu hierarchiu: ktora musi byt zhodna v HTML i v kode, zaciatocnikom chvilu trva, kym si uvedomia, kde ju narusili. Na druhy pohlad sa mi strasne pacila tvorba komponentov: vytvorim triedu, vytvorim HTML a mam hotovy komponent, ktory mozem pouzivat hocikde na akejkolvek stranke. Ja by som nedbal pouzit Wicket i na dalsom projekte, ale musel by som vediet, ze tam budu naozaj komplexne formulare. On 18. 11. 2009 13:54, Petr Zajíc wrote: Zdravím konferenci, Po nějaké době se chci zase trochu věnovat Javě, a to na webu. Poměrně zděšen jsem zjistil, že frameworků existují doslova desítky, takže jsem provedl určitý výběr ... a vyšel mi z toho Apache Wicket. Má s ním někdo zkušenosti (dobré/špatné/proč?). Javu znám spíše z desktopu a komponentový přístup je mi blízký ;-)) Díky za případné postřehy, Petr
Re: Perzistence velkeho mnozstvi POJO
Presne, ak mate entity, s ktorymi pracuje webservice, staci ich namapovat: v Hibernate pomocou XML (zrejme tie entity nebudete moct olepovat anotaciami, kedze su generovane). K zvysku staci lubovolny tutorial, napr. v slovencine: http://ics.upjs.sk/~novotnyr/java/hibernate-tutorial/hibernate-tutorial.pdf RN On 24. 6. 2009 12:34, Daniel Holešínský wrote: Zdravim, minimalne je třeba entity namapovat pomoci anotaci | xml (hibernate napr). Potom staci do persistence.xml (hibernate.cfg.xml) uvest parametr property name=hibernate.hbm2ddl.auto value=update / a voila :) tabulky se vytvareji. Jak pise Tom, je treba si k tomu cosi malo prostudovat. DH 2009/6/24 Tomas Hubalek tomas.huba...@onsemi.com mailto:tomas.huba...@onsemi.com Tak nejak nerozumim otazce. Mnoho JPA frameworku tabulky vytvari samo a persistovat POJO je pro Hibernate hracka, staci mit jen par spravnych anotaci. BTW: Prosel sis nejaky tutorial k JPA nebo Hibernate? Tom -Original Message- From: konference-boun...@java.cz mailto:konference-boun...@java.cz [mailto:konference-boun...@java.cz mailto:konference-boun...@java.cz] On Behalf Of David Vokoun Sent: Wednesday, June 24, 2009 9:38 AM To: konference@java.cz mailto:konference@java.cz Subject: Perzistence velkeho mnozstvi POJO Ahoj, rad bych se zeptal, zda znate nekdo postup/ program/ plugin do Eclipse, pomoci ktereho (polo) automaticky zajistim perzistenci velkeho mnozstvi Pojo. Vygeneroval jsem si v Eclipsu z WSDL souboru skeletony webservis (Axis2). Vygenerovana poja bych rad nejak perzistoval (JPA,Hibernate), ale kvuli velkemu mnozstvi bych to nerad delal rucne. Nejlepe aby si to vytvorilo i tabulky v db. Diky za napady. David
Re: wicket a hibernate
Wicket + Hibernate som vyskusal v malej aplikacii a tiez som sa parkrat popalil. Ale: Dokumentacia to asi nezdoraznuje dostatocne explicitne, ale odpoved na Vas problem znie: LoadableDetachableModel (LDM). Vo vacsine pripadov treba pouzivat LDM, cize modely, kde sa pamata a serializuje len primarny kluc (ID) entity. V opacnom pripade sa do sessnu uklada kompletny objektovy graf, co zerie pamat a sposobuje problemy typu s requestom sa mi nenacitaju nove data z databazy. LDM je filozofia, ktora sa zdoraznuje bez ohladu na to, ci pouzivate Hibernate alebo ciste SQL. LDM si celu entitu dotiahne pri requeste, v metode load(). Problem so serializaciou tak komplet odpada. (V sessne mate totiz len ID). RN. On Thu, 23 Apr 2009 12:16:41 +0200, radovan deka radovan.d...@seznam.cz wrote: Ahoj, nevim zda jsem neco spatne nepochopil, ale pouzivani hibernate a wicketu soucasne me neprijde uplne sikovny. Problem je v tom, ze wicketovske kompomenty mohou mit ve svem modelu pouze tridy, ktere jsou serializovatelne (coz je logicke, vzhledem k tomu, jak wicket funguje). Ale vetsina domenovych trid v moji aplikaci jsou Hibernate entity, ktere podle me implementovat Serializable nemohou, pac hibernatem vytvarene proxy objekty zavisle na hibernate session pujdou asi tezko serializovat a deserializovat. Nevim teda jak tento rozpor rozumne vyresit. Vytvareni pomocnych serializovatelnych trid, ktere pouzivam v modelech mi neprijde zrovna efektivni reseni. Mate s tim nekdo nejakou zkusenost? Predem diky za odpoved. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: Prenos velkych suborov do z klienta do webservice
Problem s beznymi WS je ten, ze vsetky data idu v sprave. Ak pouzivate SOAP over HTTP (klasicky sposob), tak to znamena, ze vas obrovsky subor pride ako jedna velka HTTP poziadavka, v ktorej je mnohomegove XML. A to mnohomegove XML treba naparsovat a podobne, co je mimo pamatovych moznosti. Cim chcem povedat len to, ze vidim problem, ale riesenie Vam neporadim (v pripade HTTP je to podla mojich vedomosti priam nemozne). On Mon, 06 Apr 2009 15:28:37 +0200, Dusan Zatkovsky msk.c...@gmail.com wrote: Ahoj. Snazim sa vyriesit $subj. Zatial som skusil 2 cesty, ktore som vygooglil. Pomocou ws attachment v jax ws a axis2. jaxws vyzeralo nejak takto: @WebService () @Stateless () public class FooWebService { @WebMethod public String uploadFileAsAttachment ( @WebParam (name = fileName) String fileName, @WebParam (name = fileContent) @XmlAttachmentRef () DataHandler fileContent ) throws IOException { ... } Pre axis2 som upravil saopwithattachments example z http://ws.apache.org/axis2/1_4_1/userguide-samples.html#others. Oba priklady som vyskusal s GlassFish2, oba skoncili pri prenose /etc/passwd uspesne, ale pri prenose vacsich suborov ( radovo GB, viac ako dostupna RAM+swap ) po kratkej chvili na chybu suvisiaci s nedostatkom pamati. Je este nejaka ina cesta, ako prenasat subory pomocou WS? Povodne som totiz navrhoval, ze klient si s ws iba pokeca a samotny prenos obstara tretia strana, pravdepodobne nejaky ssl socket, ktoremu da webservica echo o klientovi a nejake autorizacne data, ktorymi sa potom klient ohlasi. Problem je, ze je to pre mna dalsi overhead, spojeny mimo ineho aj s vecami s javou nesuvisiacimi ( povolit dalsie porty u klienta a tak podobne ). Diky. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: Inicializacia JDBC ovladaca
V povodnej otazke som zabudol dolezitu vec: primarne ma zaujima priklad trivialnych aplikacii, teda tych, ktore sa vyskytuju v tutorialoch. V nich nevidim rozdiel medzi Class.forName a new Driver(). Podla toho, co pisete, oba napevno zadrotuju ovladac do aplikacie. Ak to zosumarizujem: * Class.forName umoznuje natiahnut nazov triedy z konfiguracie. * new Driver() odbremenuje zaciatocnika od odchytu vynimky * oba su inak funkcne ekvivalentne. Ad DataSource: DataSource dataSource = new MySqlDataSource() Connection con = dataSource.getConnection(...) Toto rovnako zadrotuje ovladac do aplikacie, ale pre pripady trivialnych aplikacii a ukazok mi to pride ako najschodnejsi priklad. (Prirodzene, ze v springovskych aplikaciach vacsinou ani nevieme, ze existuje nejaky Connection a pod., pretoze SimpeJdbcTemplate je naozaj super vec. Ale niekedy treba ludi uviest do problematiky JDBC aspon v naznakoch.) Spomenul som si este, ze v Jave 6 je uz automaticke nacitavanie ovladacov cez META-INF/services, ale toto zrejme este dlho nebude mat podporu medzi vyrobcami. On Thu, 02 Apr 2009 09:18:30 +0200, Martin Kuba ma...@ics.muni.cz wrote: Ahoj ve spolek, ještě bych k tématu poznamenal, že používání DriverManager je od Javy 1.4 zastaralé, viz http://java.sun.com/javase/6/docs/api/java/sql/DriverManager.html The DataSource interface, new in the JDBC 2.0 API, provides another way to connect to a data source. The use of a DataSource object is the preferred means of connecting to a data source. Problém s DataSource trochu je, že v JRE není jeho implementace, tu má dodat výrobce JDBC ovladače. Jako optimální se mi nyní jeví použít pro přístup k databázi Spring, protože ten obsahuje různé implementace DataSource, zejména org.springframework.jdbc.datasource.DriverManagerDataSource, a tudíž můžu stejný kód používající DataSource použít jak v desktopové aplikaci bez connection poolingu, tak ve webové aplikaci s connection poolingem, jenom v konfiguraci měním implementaci DataSource. S použitím třídy SimpleJdbcTemplate je pak práce s JDBC opravdu příjemná, mohu doporučit. Vyráběl jsem k tomu onehdy návod, kdyby to někoho zajímalo, je tady: http://kore.fi.muni.cz:5080/wiki/index.php/Spring_JDBC Makub Zdenek Tronicek napsal(a): Dobry den, presne tak. Kdyz napisete do kodu new MyDriver();, tak svazete aplikaci s konkretnim driverem. Proto se ustalila konvence, ze driver ma staticky inicializator, ktery jej zaregistruje u DriverManager: public class MyDriver implements Driver { static { DriverManager.registerDriver(new MyDriver()); } ... } Pak staci natahnout tridu driveru do pameti. Bud pres Class.forName() nebo nastavenim property jdbc.drivers na prikazove radce. Z.T. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Inicializacia JDBC ovladaca
Dobry den, zamyslel som sa nad ukazkovymi kodmi inicializacie JDBC ovladaca a mam mozno hlupu otazku. Takmer kazda prirucka / tutorial tvrdi, ze JDBC ovladac sa inicializuje nasledovne: try { Class.forName(com.mysql.jdbc.Driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } a pripojenie sa ziska cez Connection = DriverManager.getConnection(...), ale to nie je dolezite. Nie je predsa lepsie rovno vytvorit instanciu ovladaca a vyhnut sa odchytavaniu nanajvys obskurnej ClassNotFoundException? import com.mysql.jdbc.Driver; Driver driver = new Driver(); Connection = DriverManager.getConnection(...) Pripadne nezvyklejsie: new Driver(); Connection = DriverManager.getConnection(...) Dokumentacia tvrdi, ze Class.forName inicializuje ovladac a zaregistruje ho v DriverManageri (zvycajne v bloku statickej inicializacie v implementacii Drivera). Ale podla JLS sa toto iste musi stat pred vytvorenim prvej instancie konkretneho Drivera. Chapem nieco zle? Alebo vsetci opisuju z prazdroja, ktory ustanovil, ze driver sa inicializuje cez Class.forName? Alebo sa vsetci boja vytvorenia instancie, ktora sa nepouziva? [Ci vytvorenia instancie, ktora sa nevlozi do premennej?]
Re: začátky s JEE
Tiez suhlasim s predrecnikom v tom, ze ucit sa JEE preto, aby ste poznali JEE je zbytocne. je lepsie zamysliet sa nad tym, ktore konkretne casti specifikacie, resp. ktore konkretne prakticke problemy vas zaujimaju. JEE je totiz natolko siroky pojem, ze moze znamenat vselico. S niektorymi vecami sa mozno stretnut pravidelne (servlety), niektore je dobre poznat (JSP) a zvladnutie niektorych velmi zalezi na tom, co od vas chce klient alebo firma. JSF moze byt uzitocne, ale i uplne zbytocne, ak ho nepouzivate. (Mozno pouzivate uplne iny webovy framework). To iste sa tyka aj EJB, kde je rovnopravna alternativa v Springu. Web services su vacsinou samostatna oblast. To iste messaging JMS. A s konektormi sa prosty clovek stretne si len velmi zriedka. A na druhej strane existuje mnozstvo oblasti, ktore su pouzivane, ale v JEE su len scasti. Hibernate (ktore ma v JEE prienik v JPA). Spring. Milion webovych frameworkov, ktore sa casto pouzivaju, ale maju smolu, ze nemaju peciatku specifikacie. Skuste sa zamysliet a pripadne spytat na konkretne technologie, urcite sa najde viac (online) zdrojov. Robert Novotny On Tue, 17 Mar 2009 21:23:59 +0100, Ladislav Kulhanek ladislav.kulha...@gmail.com wrote: Podle me se JavaEE neda ucit stylem, ze si koupim knizku JEE for beginners, prectu si ji a umim JEE. JEE je strasne obsahle, obsahuje plno technologii a clovek nemuze umet vsechno. Nauci se to, co potrebuje. Pouziva se v projektu JSF? Holt se budu muset neco dozvedet o JSF. Pouziva Cocoon? Naucim se pracovat s Cocoonem. Je ale pravda, ze s nejakyma tachnologiema se clovek setka s velmi velkou pravdepodobnosti. Nejcasteji pouzivane jsou asi Servlety, Jsp a treba Hibernate. Nejlepsi zpusob jak se naucit v JEE je programovat neco praktickeho, HelloWorld priklady cloveku tolik nedaji. Zkusil bych si naprogramovat nejakou webovou aplikaci. Neco trochu vetsiho, treba svoji vlastni wiki, nebo cokoli jineho, ted me nic nenapada. Muzes si na ni vyzkouset hodne veci: prihlaseni, komunikaci pres https, upload a download souboru,... muzes do toho pak treba zakomponovat Hibernate nebo Spring. Co se tyka zdroju, dobry serial o servletech a v cestine je tady: http://interval.cz/clanky/java-servlets-predstavenie-technologie/ 2009/3/17 Ondra Medek xmed...@gmail.com Knihu nevim, ale http://java.sun.com/javaee/5/docs/tutorial/doc/ Avsak tady je EJB, ne Spring. 2009/3/13 Jiří Nápravník jiri.naprav...@gmail.com: Dobrý den, začínám s Java EE a rád bych měl nějaké kvalitní zdroje. Mlůžete nějaké doporučit, chtěl bych nějak od začátku (zvládám v podstatě jen napsat nějaký servlet) až řejněme mírně pokročilý. Preferoval bych knihu, čte se mi lépe kniha než online zdroje. Pak ve finále bych si koupil Hibernate in Action a Spring in Action, ale to až po nějakých základech apod. Díky za trpělivost -- Přeji pěkný zbytek dne, s pozdravem Jiří Nápravník -- Ondra Medek -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: Kedy dojde k odstraneniu objektu?
Ano, ja som si uz na seminari uvedomil, ze to nie je dobre riesenie (ani ako demonstracia) a teda, ze jedine dobre riesenie je manualne zatvorenie. V tom danom priklade, ktory sme na seminari rozoberali, by to vsak ulohu skomplikovalo. Moralne ponaucenie z toho je, ze ak sa v niecom nevyznate dobre, a chcete si tym zjednodusit situaciu, tak to radsej nepouzivajte, lebo z toho vzidu este ovela vacsie hrozy. On Thu, 26 Feb 2009 15:48:17 +0100, Ondrej Nekola on...@nekola.cz wrote: Na neco takoveho vam finalize nepomuze. Duvody psalo nekolik lidi prede mnou. O finalize se podrobneji pise trebas v Blochovi. Vysledek je, ze moznosti pro jeho pouziti jsou male, nekdo tu ukazoval zalozni dealokaci nekritickych zdroju, ja bych doplnil moznost napsat nejaky vypis typu Tady nejaky pitomec programator neuzavrel spojeni, trida XYZ neni spravne uzivana. finalize() bych radeji nikdy nevolal manualne, napsal bych si radeji metodu close() nebo finishWork() nebo dealocate().. popsal ji v javadocu a tu volal rucne. A pak (po overeni, ze je to treba) ji pripadne volal z finalize jako moznost posledni zachrany. OSN PS: mnohdy je finaly to, co potrebujete. Presne toto som vcera pozoroval na seminari z Javy. Mali sme priklad, ked trieda mala po ukonceni aplikacie serializovat svoje data na disk. Najzjavnejsi a najjednoduchsi napad bolo pouzit finalize(). V inteligentnejsich pripadoch by sa totiz zadanie skomplikovalo a na to nebol cas. Polovici ludi to zbehlo a druhej polovici nie. Aby sme to nakoniec nekomplikovali, rozhodli sme sa volat finalize() manualne. Viac som po tom nepatral. Ked sa na to pozeram, opat sa ukazalo, ze finalize() by v podstate malo byt zakazane, lebo posobi len neplechu. Vdaka za vysvetlenie. RN On Wed, 25 Feb 2009 10:44:41 +0100, Lukáš Zapletal lu...@zapletalovi.com wrote: Necetl jsem to vse cele, ale je nutne si uvedomovat, ze GC nemusi objekt uklidit vubec! Paklize dojde k ukonceni programu, nez dojde pridelena heap a GC se nerozhodne vubec pro uklid, tak se javovsky proces ukonci a vrati cely blok pameti do OS. Tj k volani finalize nedojde vubec. LZ 2009/2/24 Tomas Studva tstu...@gmail.com: To kedy sa dealokovalo f, zaviselo od velkosti pola, cize ci sa este pred cyklom automaticky spustilo gc. Treba si vsak uvedomit ze kompilator nemoze takmer vobec ovplyvnit dealokaciu - ak by bol predposledny prikaz bloku volanie nejakej metody, tak uz nik nevie co sa stalo. Nejako vsak ten gc vie ze na f uz nic neukazuje, alebo je v inej generacii ako stuff. Napada mi reference counting, ale to sa zevraj nepouziva v gc-ckach (viem ale ze ref-count. napr. pouziva Cocoa). Zdenek Tronicek wrote / napísal(a): Ja jsem popisoval, jak se chova JVM za normalnich podminek. V okamziku, kdy zacne dochazet pamet, zacne JVM drsne optimalizovat. A ze to umi, lze videt na tomto prikladu (z Vaseho kodu jsem vypustil blok): System.out.println(start); // vytvorim Foo Foo f = new Foo(null); // vytvorim pole Stuff Stuff[] theStuffs = new Stuff[10]; for (int i = 0; i theStuffs.length; i++) { theStuffs[i] = new Stuff(); } // nez se dojde sem, je po objektu f while (true) { System.out.println(aaa); Runtime.getRuntime().gc(); try { Thread.sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } Na mem pocitaci dojde k dealokaci objektu f jeste drive, nez se vstoupi do smycky while. Jak k tomu muze dojit? Java neco takoveho neumoznuje, jde ciste o optimalizaci JVM. Mimochodem, myslim, ze tohle je na hranici toho, co jeste lze delat, protoze kdyby nejaky program spolehal na to, ze objekt nemuze byt dealokovan pred koncem platnosti promenne f (tj. pred koncem metody), nebude fungovat. Pokud jde o ty lokalni promenne, tak ve vypise javap je jejich pocet za retezcem Locals= a po dobu vykonavani metody se tato hodnota nemeni. Z.T. --Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: Kedy dojde k odstraneniu objektu?
Presne toto som vcera pozoroval na seminari z Javy. Mali sme priklad, ked trieda mala po ukonceni aplikacie serializovat svoje data na disk. Najzjavnejsi a najjednoduchsi napad bolo pouzit finalize(). V inteligentnejsich pripadoch by sa totiz zadanie skomplikovalo a na to nebol cas. Polovici ludi to zbehlo a druhej polovici nie. Aby sme to nakoniec nekomplikovali, rozhodli sme sa volat finalize() manualne. Viac som po tom nepatral. Ked sa na to pozeram, opat sa ukazalo, ze finalize() by v podstate malo byt zakazane, lebo posobi len neplechu. Vdaka za vysvetlenie. RN On Wed, 25 Feb 2009 10:44:41 +0100, Lukáš Zapletal lu...@zapletalovi.com wrote: Necetl jsem to vse cele, ale je nutne si uvedomovat, ze GC nemusi objekt uklidit vubec! Paklize dojde k ukonceni programu, nez dojde pridelena heap a GC se nerozhodne vubec pro uklid, tak se javovsky proces ukonci a vrati cely blok pameti do OS. Tj k volani finalize nedojde vubec. LZ 2009/2/24 Tomas Studva tstu...@gmail.com: To kedy sa dealokovalo f, zaviselo od velkosti pola, cize ci sa este pred cyklom automaticky spustilo gc. Treba si vsak uvedomit ze kompilator nemoze takmer vobec ovplyvnit dealokaciu - ak by bol predposledny prikaz bloku volanie nejakej metody, tak uz nik nevie co sa stalo. Nejako vsak ten gc vie ze na f uz nic neukazuje, alebo je v inej generacii ako stuff. Napada mi reference counting, ale to sa zevraj nepouziva v gc-ckach (viem ale ze ref-count. napr. pouziva Cocoa). Zdenek Tronicek wrote / napísal(a): Ja jsem popisoval, jak se chova JVM za normalnich podminek. V okamziku, kdy zacne dochazet pamet, zacne JVM drsne optimalizovat. A ze to umi, lze videt na tomto prikladu (z Vaseho kodu jsem vypustil blok): System.out.println(start); // vytvorim Foo Foo f = new Foo(null); // vytvorim pole Stuff Stuff[] theStuffs = new Stuff[10]; for (int i = 0; i theStuffs.length; i++) { theStuffs[i] = new Stuff(); } // nez se dojde sem, je po objektu f while (true) { System.out.println(aaa); Runtime.getRuntime().gc(); try { Thread.sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } Na mem pocitaci dojde k dealokaci objektu f jeste drive, nez se vstoupi do smycky while. Jak k tomu muze dojit? Java neco takoveho neumoznuje, jde ciste o optimalizaci JVM. Mimochodem, myslim, ze tohle je na hranici toho, co jeste lze delat, protoze kdyby nejaky program spolehal na to, ze objekt nemuze byt dealokovan pred koncem platnosti promenne f (tj. pred koncem metody), nebude fungovat. Pokud jde o ty lokalni promenne, tak ve vypise javap je jejich pocet za retezcem Locals= a po dobu vykonavani metody se tato hodnota nemeni. Z.T. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: Kedy dojde k odstraneniu objektu?
Garbage collector funguje nedeterministicky a v zavislosti od implementacie. Inak povedane, * neda sa zarucit jeho spustenie * System.gc() je len navrh, ze ma zbehnut. Letmy pohlad do dokumentacie podla mna nikde nehovori, ze premenna, ktora vypadla zo scope MUSI byt zgarbagecollectovana. Pokial mojmu zraku neusiel memory leak, tak by som jednoducho povedal, ze GC usudil, ze kvoli dvom smiesnym instanciam nema zmysel spustat GC masineriu. RN On Tue, 24 Feb 2009 17:04:45 +0100, Dusan Zatkovsky msk.c...@gmail.com wrote: Ahoj. Kedze som v jave novy a prechadzam do nej z C++, obcas sa pri programovani pozastavim nad nejakou vecou, o ktorej viem, ze tak nejak funguje, ale aby som mal pokojne spanie, musim si to osahat vlastnymi rukami. Prave som napisal nejaku class-u, ktora obaluje urcite podclassy a poskutyje urcitu ucelenu funkcionalitu. Tie jej podclassy rozne ukazuju sami do seba, medzi sebou a tak podobne, proste o sebe vedia. A tak sa mi hlavou zacali tocit otazky okolo garbage collectoru, platnosti objektov, case ich uvolnenia z pamati a tak podobne. A kedze som bol byvalym kolegom ( zdravim Ta Nhac :) ) presviedsany, ze reci okolo javy a jej pamatovej nenazranosti su nezmysly, vyrobil som si rovno maly test: // obycajna class-a. Vypisom testujem cas jej odstranenia z pamati // urdzuje odkaz na svoju nadradenu classu, pretoze obe budem nejak // zapuzdrovat do jedneho celku a vyuzivaju medzi sebou svoje sluzby public class Foo { private Stuff stuff; public Foo ( Stuff s ) { this.stuff = s; } @Override protected void finalize() { System.out.println(finalize Foo); } } // nejaka dalsia classa public class Stuff { public Foo foo = new Foo ( this ); @Override protected void finalize() { System.out.println(finalize Stuff); } } public static void main(String[] args) { System.out.println(start); { // vytvorim Foo Foo f = new Foo(null); // vytvorim Stuff, ten si vytvori dalsie Foo Stuff s = new Stuff(); // f = null } // tu uz neexistuje ani Foo f, ani Stuff f, mozu byt zmazane while ( true ) { System.out.println(aaa); Runtime.getRuntime().gc(); Thread.sleep(2000); } } } Kupodivu, vystupom programu bol nasledovny vypis: start aaa aaa aaa ... Po pol hodine som to nechapajuc breakol. Odkomentoval som to f = null Vystup: start aaa finalize Foo aaa aaa aaa ... Toto som nechal bezat par minut. Garbage collector ten Stuff nie a nie zmazat. Priznam sa, ze to uplne nechapem, pretoze za prvou zlozenou zatvorkou } straca Stuff s platnost a nema dovod viac existovat v pamati. Mna by zaujimalo, kedy ho gc uvolni, pretoze pokial bude mat Stuff 2GB, bude aplikacia bezdovodne kradnut systemu 2GB pamati na bordel, ktory uz nikdy nepouzije, boh vie na aku dlhu dobu. Diky. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: typedef v jave / ako dedit z Integer, Long ...
Neviem presne, ako funguje typedef v C++ (C++ nepouzivam), je to vlastne alias datoveho typu? Cize po typedef int DruhZvierata mozem pisat DruhZvierata druhZvierata = 25; ? Take nieco v Jave neexistuje. To co ste sa pokusali, je oddedenie od zakladnych typov a to nefunguje. Pomohlo by, keby ste zverejnili use-case, teda na co to presne potrebujete, lebo mozno sa to da urobit inak. Zakladna vec, co mi napada je public class DruhZvierata { private int kodDruhu; public DruhZvierata(int kodDruhu) { this.kodDruhu = kodDruhu; } public int getValue() { return kodDruhu; } } V specialnych pripadoch sa hodi enum public enum DruhZvierata { SUCHOZEMSKE, VODNE, OBOJZIVELNE } a potom public class Zviera { private DruhZvierata druhZvierata; } ... tapir.setDruhZvierata(DruhZvierata.SUCHOZEMSKE); RN == On Fri, 20 Feb 2009 16:14:50 +0100, Dusan Zatkovsky msk.c...@gmail.com wrote: Ahoj. Uz budem asi trapny, ale ako dosiahnut v jave podobneho efektu aky ma v c++ typedef? Chcem si zadefinovat vlastne typy pre rozne ciselne premenne, ale rad by som bol, aby kompilator kvical v pripade, ze by som mixoval medzi sebou rozne typy hala-bala. Skusal som class Foo extends Long {}, ale Long je final. Tym som vycerpal vsetky napady. Google moc nepomaha, neviem sa spravne opytat. Diky -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: typedef v jave / ako dedit z Integer, Long ...
Teda chapem to spravne, sluzi to na to, aby si pouzivatel nepomylil poradie parametrov. Toto sa v Jave neda, jedine riesenie je to obalit do triedy, teda urobit triedu s jednou instancnou premennou. public class DocumentID { private long value; // konstruktory, gettre, settre } public class OtherID { private long value; // konstruktory, gettre, settre } public void foo(DocumentId doc, OtherID oth) { } RN On Fri, 20 Feb 2009 17:04:09 +0100, Dusan Zatkovsky msk.c...@gmail.com wrote: On Friday 20 of February 2009 16:52:37 Tomas Hubalek wrote: Muzes spis ukazat nejake pouziti? Parametre ochranene typmi, kompilator vyhlasi chybu: typedef long DocumentID; typedef long OtherID; void foo ( DocumentID doc, OtherID oth ) { // ... } DocumentID did = 1; OtherID oid = 2; foo ( did, oid ); foo ( oid, did ); // kompilator povie fuck --- Holy long, kompilator to skompiluje a kod bude robit nezmysly: long did = 1; long oid = 2; foo ( did, oid ); foo ( oid, did ); -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Ako prepojit dve webaplikacie?
Dobry den, riesime s kolegami nasledujuci architekturno-technologicky problem a nedari sa nam prist na zmysluplne riesenie. Mame informacny system ktory ma byt rozsireny o vrstvu webovych sluzieb. V nej maju byt zverejnene dolezite funkcie informacneho systemu, ku ktorym budu pristupovat klienti. IS je rieseny ako (jedna) webova aplikacia nasadena na Tomcate, webove sluzby riesime cez Spring-WS. Nasim cielom je mat WS vrstvu co najviac nezavislu od zvysku projektu. Jednak kvoli vyvojarom web. sluzieb a jednak kvoli tomu, aby bolo mozne nasadzovat, spustat a zastavovat WS nezavisle od zvysku systemu. Napad 1: [tazkotonazny] * Jeden Eclipse projekt, dodat do webovej aplikacie springovsky servlet, nasadit ho a pouzivat. Vsetko bude na kope. Napad 2: * Dva projekty (1 existujuci pre jadro, druhy pre WS, WS zavisi na jadre). Do webovej aplikacie sa doda springovsky servlet a vrstva s WS sa zabali do JARu, ktory sa deployne do webovej aplikacie. Napad 3: * Dva projekty (1 existujuci pre jadro, druhy pre WS, WS zavisi na jadre). Dve webove aplikacie (jedna cisto pre WS, druha pre jadro). To znamena, ze potrebujeme mat triedy jadra nasadene dvakrat, co sposobi problem so synchronizaciou balickov, tried a pod. Napad 4: * Dva projekty (1 existujuci pre jadro, druhy pre WS, WS zavisi na jadre). Dve webove aplikacie (jedna cisto pre WS, druha pre jadro). WS webaplikacia nejakym zazracnym sposobom vidi triedy z webaplikacie jadra. Pozeral som sa na principy classloaderov v Tomcate, ale jediny sposob by bol nasadit triedy do SYSTEM classloadera Tomcatu, co znamena publikovanie JARov jadra do $TOMCAT/lib, co nie je ktovieco. Nemate niekto skusenosti s komunikaciou dvoch web aplikacii alebo nejaku radu, ktory napad je lepsi? Vdaka. Robert Novotny
Re: Ako prepojit dve webaplikacie?
Oddelenie funkcionality od webovej aplikacie je, zial, nemozne. Je to zdedena webova aplikacia, kde taketo riesenie neprichadza do uvahy. Ale v inom pripade by to bol dobry napad. On Wed, 11 Feb 2009 12:45:19 +0100, Martin Kuba ma...@ics.muni.cz wrote: Navrhuji nápad 5, mít tři projekty, v jednom jen třídy představující funkcionalitu aplikace, ve druhém webovou aplikaci a ve třetím webové služby. Druhý a třetí projekt budou záviset na prvním, takže třídy budete udržovat jen jednou, ale v běžícím TomCatu budou dvakrát, v každé webové aplikaci zvlášť. Zívislosti mezi projekty se dají udělatv NetBeans, v IntellijIDEA i v Mavenu, a určitě i jinde. Makub Robert Novotny napsal(a): Napad 4: * Dva projekty (1 existujuci pre jadro, druhy pre WS, WS zavisi na jadre). Dve webove aplikacie (jedna cisto pre WS, druha pre jadro). WS webaplikacia nejakym zazracnym sposobom vidi triedy z webaplikacie jadra. Pozeral som sa na principy classloaderov v Tomcate, ale jediny sposob by bol nasadit triedy do SYSTEM classloadera Tomcatu, co znamena publikovanie JARov jadra do $TOMCAT/lib, co nie je ktovieco. Nemate niekto skusenosti s komunikaciou dvoch web aplikacii alebo nejaku radu, ktory napad je lepsi? Vdaka. Robert Novotny -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: ako zistit webservice root v jax-ws
Pozdravujem, nie je mi celkom jasne, ze co znamena korenovy adresar web service. To je adresar v suborovom systeme, kde je WEB-INF? Ak hej, tak je problem v tom, ze JAX-WS sluzba netusi nic o tom, ze pod nou bezi nejaky servletovy kontajner. Idiotske riesenie (po dvojsekundovej uvahe) mi pride skusit tahat cestu cez tovaren so statickou premennou, kde tu cestu k adresaru nastavite v servlete (servlet totiz vacsinou vie, aka adresa vo filesysteme zodpoveda WEB-INF adresaru). Ale urcite niekoho napadne menej brutalne riesenie. RN On Thu, 09 Oct 2008 11:49:33 +0200, jozef menda [EMAIL PROTECTED] wrote: mam webservice v jax-ws,beziacu na tomcate,potrebujem v nej nacitavat nejaky subor,ktory sa nachadza v korenovom adreari webservice. Ako ziskam absolutnu adresu korenoveho adresara tej webservice aby som mohol otvorit ten subor? mozno zaciatocnicka otazka,ale pre jax-ws som odpoved nikde nenasiel. vdaka. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: WebService vs. vlastny format
Sunovska implementacia JAX-WS 2.0 je primarne vyvijana pod subprojektom Glassfish Metro a ten urcite bezi aj pod JDK 5. Co sa tyka WSDL: myslim, ze vacsina nastrojov je zalozena na WSDL 1.1, ktore je uz dobrych 5 rokov stabilne a obavy nie su na mieste. Ten je podporovany vsetkymi moznymi platformami. WSDL 2.0 je sice novsia verzia, ale neviem, ci ho vobec niekto pouziva. Navyse, WSDL je istym sposobom dokumentacia k webovej sluzbe, mozno z nej vygenerovat server i klienta a zarucuje konzistentnost rozhrania (v zmysle syntax sprav), ku ktoremu pristupuju klienty Hessian nic analogicke neponuka. Ale Hessian ma urcite zmysel v pripade, ze sa neplanuje interoperabilita a klienti su jednoduchi (dokonca som videl implementacie Hessianu v inych jazykoch). Tiez by som dal pozornosti webservicovsky framework Spring-WS, ktory je postaveny na cistom posielani XML sprav. V minimalistickej verzii nie je ani potrebne mat WSDL. Volitelne je mozne zapajat validaciu sprav, podporu WSDL, bezpecnost, serializaciu XML sprav na objekty (s pouzitim existujucich kniznic ako napr. JAXB). RN On Mon, 06 Oct 2008 11:17:00 +0200, Radovana Straube [EMAIL PROTECTED] wrote: JAX WS 2.0 funguje i na JDK 1.5.0. Dakujem za odpoved. Trochu ma poplietol clanok Introducing JAX-WS 2.0 With the Java SE 6 Platform http://java.sun.com/developer/technicalArticles/J2SE/jax_ws_2/ Jinak rict ze WSDL podleha vyvoji a tim padem bude vetsi a tezkopadnejsi mi prijde ponekud zvlastni. Podla kolegu ma clovek nad svojim formatom vacsiu kontrolu a stale sa rozvijajuce technologie prinasaju iba viac roboty. S cim zase az tak nesuhlasim. Niekedy nove technologie pracu zjednodusia. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: SOAP klient
Tiez sa pripajam k nazoru, ze pokial je k dispozicii WSDL, tak je urcite lepsie vygenerovat kod klienta cez WSDL2Java nez sa ho snazit zbastlit rucne. Co presne znamena to, co mi vylezlo se vůbec nijak nepodobalo tomu, co se píše v dokumentaci dál. Znamena to, ze vygenerovany klient nefungoval? RN On Tue, 30 Sep 2008 11:08:22 +0200, Martin Kuba [EMAIL PROTECTED] wrote: Vladimír Náprstek napsal(a): Zdravím, generování jsem zkoušel a nějak jsem se nikam nedostal, protože to, co mi vylezlo se vůbec nijak nepodobalo tomu, co se píše v dokumentaci dál. To se mi nezdá, vygenerovat stub z WSDL funguje podle mých zkušeností nejspolehlivěji. Naopak skládání SOAP requestu ručně nebo generování z WSDL za běhu má sklon k vytvoření špatného XML. Nicméně jsem našel jinou cestu (pro mne čitelnější) a zadrhl jsem se na kouzlu. Mám kód: MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage message = messageFactory.createMessage(); SOAPPart soapPart = message.getSOAPPart(); MimeHeaders hd = message.getMimeHeaders(); String authorization = new BASE64Encoder().encode((userName + : + pass).getBytes()); hd.addHeader(Authorization, Basic + authorization); Do manipulace HTTP hlaviček kvůli autentizaci bych se nepouštěl. U většiny webservicových frameworků se dá manipulovat část odpovědná za HTTP transport, u Axis2 je to Commons HttpClient a postup je popsán tady: http://ws.apache.org/axis2/1_4_1/http-transport.html#preemptive_auth Makub -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
Re: SOAP klient
Ano, mne sa stalo v pripade stareho Axisu, ze pre obsiahle WSDL generoval obludne velke klientske subory (svetovy rekord drzi 500kB class, ktory posielal eclipseovske i netbeansovske editory do kolien). V kazdom pripadne nerozumiem, co znamenalo, ze vygenerovany klient sa nedal pouzit - triedy sa Vam zdali nepouzitelne? Ak to vsak funguje manualnym sposobom (teda vybudovanim spravy), tak je to asi akceptovatelne v pripade, ze su spravy jednoduche. RN On Tue, 30 Sep 2008 15:17:16 +0200, Vladimír Náprstek [EMAIL PROTECTED] wrote: Robert Novotny píše v Út 30. 09. 2008 v 11:25 +0200: Tiez sa pripajam k nazoru, ze pokial je k dispozicii WSDL, tak je urcite lepsie vygenerovat kod klienta cez WSDL2Java nez sa ho snazit zbastlit rucne. Co presne znamena to, co mi vylezlo se vůbec nijak nepodobalo tomu, co se píše v dokumentaci dál. Znamena to, ze vygenerovany klient nefungoval? Abych řekl pravdu, tak nevím. Vypadl mi jeden soubor (přes 7000 řádků), ze kterého jsem nebyl moc moudrý. No a pak dál podle dokumentace jsem se pokoušel toho vygenerovaného klienta použít ale nepochodil jsem. Začal jsem z toho úplně magořit, tak jsem toho nechal. A u axus-u (jak tu už padlo s tím autentifikátorem) jsem nepochodil protože se mi hlavní uzel generoval s tagem arg0 a nenašel jsem způsob, jak to změnit. Nakonec jsem si vyrobil zprávu (přes javax.xml.soap.*) a pak ji nasprosto poslal pomocí org.apache.commons.httpclient.HttpClient-a. Není to moc profesionální, ale funguje to a zdrojáky mají celkem asi 400 řádek (včetně komentářů a čtení dat z ORA databáze). PS ta služba je SAPová, ten wsdl podle toho vypadá. Ale vím, jak má vypadat výsledná xml zpráva, takže ji mohu vyrobit celkem snadno. RN On Tue, 30 Sep 2008 11:08:22 +0200, Martin Kuba [EMAIL PROTECTED] wrote: Vladimír Náprstek napsal(a): Zdravím, generování jsem zkoušel a nějak jsem se nikam nedostal, protože to, co mi vylezlo se vůbec nijak nepodobalo tomu, co se píše v dokumentaci dál. To se mi nezdá, vygenerovat stub z WSDL funguje podle mých zkušeností nejspolehlivěji. Naopak skládání SOAP requestu ručně nebo generování z WSDL za běhu má sklon k vytvoření špatného XML. Nicméně jsem našel jinou cestu (pro mne čitelnější) a zadrhl jsem se na kouzlu. Mám kód: MessageFactory messageFactory = MessageFactory.newInstance(); SOAPMessage message = messageFactory.createMessage(); SOAPPart soapPart = message.getSOAPPart(); MimeHeaders hd = message.getMimeHeaders(); String authorization = new BASE64Encoder().encode((userName + : + pass).getBytes()); hd.addHeader(Authorization, Basic + authorization); Do manipulace HTTP hlaviček kvůli autentizaci bych se nepouštěl. U většiny webservicových frameworků se dá manipulovat část odpovědná za HTTP transport, u Axis2 je to Commons HttpClient a postup je popsán tady: http://ws.apache.org/axis2/1_4_1/http-transport.html#preemptive_auth Makub -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
nastroj
Zdravim, mne sa pre jednoduche pripady osvedcil nastroj na prezeranie a manipulovanie s databazou Squirrel[1]. Okrem moznosti vykonavat SQL prikazy umoznuje aj zobrazit tabulky v grafickej podobe. [1] http://squirrel-sql.sourceforge.net/ Ahoj, chtel bych se zeptat, zda existuje naky volne dostupny nastroj, ktery by umel z jiz vytvorene databaze nakreslit ER diagram. Databazi mi vytvoril Hibernate z domain modelu. Diky
Stripes 1.5
Tak Stripes, Wicket nebo Tapestry? Muze nekdo shrnout pros_n_cons ? LZ Wicket je zase komponentovo orientovany - kym v MVC pracuje stranka plusminus nad jednym modelom, kazdy wicketovsky komponent moze mat vlastny model, ktory sa aktualizuje nezavisle od ostatnych. Zhrnutie Wicketu * filozofia OOP sa pouziva napriec celym frameworkom - dedicnosti, kompozicie a vnutornych tried je tam pozehnane. Ak chcete zmenit spravanie nejakeho komponentu, jednoducho oddedite danu metodu a je vystarano. * idey su znacne ovplyvnene Swingom. Komponenty su nemanazovane - vytvaraju sa ich instancie, ktore sa hierarchicky pridavaju do nadradenych komponentov (textove pole do formulara, ten do stranky atd.) Rovnako sa nerozmysla v pojmoch ako session-request a response, ale v komponentovo-udalostnych pojmoch. Prikladom je komponent link, vytvori sa jeho instancia, prida do formulara, oddedi sa metoda onClick() a v nej sa uvedie kod. K dispozicii je pomerne velky pocet roznych komponentov, pre menej bezne a uzitocne komponenty existuje wicketovsky subprojekt. * komponenty je mozne samozrejme skladat a znovupouzivat, co je dost velka vyhoda (podobne ako v JSF). Je mozne si urobit komplexny komponent zobrazujuci profil pouzivatela a pouzit ho takpovediac na jeden riadok v lubovolnej stranke. Vytvaranie vlastnych komponentov je velmi jednoduche (oddedime, zmenime prislusne spravanie, dodame HTML sablonu so vzhladom). * ziadna aplikacna logika v templateoch (skoro ciste HTML, niekolko malo specifickych tagov s prefixom wicket). Stranky je mozne principialne prezerat a editovat v lubovolnom WYSIWYG editore (pouzitie dedicnosti (napr. kvoli jednotnemu vzhladu) to vsak moze skomplikovat). * filozofia templateov je podobna Tapestry: v HTML kode sa priradi tagu specialny identifikator cez (wicket:id) a v Java triede sa vytvori instancia triedy. * pomerne vysoka uciaca krivka - pochopenie fungovania modelov, ktory-kde-kedy pouzit trochu trva a musi sa vzit. Ak vsak clovek pochopi tu celkovu filozofiu (ktora je v principe velmi jednoducha), produktivita rastie. * vyborna podpora cez mailing list. Ak je nejaka vec, ktora v dokumentacii chyba, otazka do mailinglistu da odpoved velmi rychlo a velmi privetivou formou. Inak s vyjdenim Spring 2.5 znacne prekopali aj MVC cast. Je o tom clanok na java.cz portale - anotacie a convention-by-configuration su moznosti, ktore Spring MVC znacne priblizuju filozofii Stripes. RN