Názory k článku
Podpora skriptovacích jazyků v JDK6 a OpenJDK6
Jython debugger
celé vláknoNevie niekto o nejakom plugine do eclipse s podporou debugovania jython scriptou? Java scripty funguju ok, kedze java podporu to ma ale na jython som nic slusne nenasiel :/
Date
celé vláknoDemoštruje sa návratová hodnota skriptu new java.util.Date() - čo to ale vôbec je? Volanie javovského kódu z javascriptu?
Zaujímavé by to bolo, keby fungoval prevod návratovej hodnoty v prípade javascriptového new Date(). Výsledkom je totiž iba sun.org.mozilla.javascript.internal.NativeDate@1e893df
Re: Date
celé vláknoAno, v JavaScriptovem kodu je mozne vytvaret javovske objekty, bud zpusobem naznacenym v demonstracnim prikladu, nebo je nutne na zacatku pomoci "funkce" importPackage() naimportovat prislusny balicek (skutecne se ze syntaktickeho hlediska jedna o JavaScriptovou funkci, ne o specialni konstrukci tak, jak to je v Jave).
To, zda new Date() vraci date, zavisi na pouzitem skriptovacim enginu, ale bylo by pekne, kdyby tech mapovani bylo vic.
Ma script pristup k java objektom?
celé vláknoMa script pristup k java objektom, ako napriklad Velocity?
Re: Ma script pristup k java objektom?
celé vláknoMyslite, zda skript muze vytvaret plnohodnotne Javovske objekty, nebo zda muze pristupuvat k instancim beziciho programu? V tom druhem pripade je to trosku pres ruku, hlavne kvuli bezpecnosti (ale kdyz se objekt preda pres Bindings nebo jako parametr funkci, neni s tim problem).
Re: Ma script pristup k java objektom?
celé vláknoVelocity tiez nevie vytvarat instancie objektov, prakticky vie len pristupovat k objektom a metodam.
Re: Ma script pristup k java objektom?
celé vláknoAno, a presne to by sa mi zislo a velocity ma nahradnika :)
Re: Ma script pristup k java objektom?
celé vláknoJava objekty se daji ze skriptu (pri pouziti JSR 223) vytvaret a predavat do Javy, taky se da pomoci ScriptEngine.put() predat libovolny objekt s prirazenym klicem (String), to si ukazeme priste.
Volani libovolnych objektu ze skriptu (mysleno nepredane objekty) neni povoleno, aby script-kiddies meli trosku ztizenou praci :-)
Re: Ma script pristup k java objektom?
celé vláknoPotom to znamena, ze to v Java skriptovani funguje rovnako ako vo Velocity.
Akeho nahradnika mate na mysli? Velocity som pouzival v diplomke, ale potom som zistil, ze Freemarker je v niektorych ohladoch lepsi, krajsia syntax a podobne (i ked Velocity odvtedy vstalo z mrtvych a zmenilo sa).
Ono realne je otazka, v akom pripade chcete vytvarat instancie objektov v skripte -- mal som konkretnu situaciu, ked som chcel skriptovat v XWiki (tam je povolene skriptovanie v Groovy a Velocity, ale v obmedzenych pripadoch len to druhe) a chcel som sa vyhnut vytvaraniu tried.
Myslim, ze snaha instanciovat objekty v sablonovom stroji je podozriva, kedze sa vam miesaju vrstvy.
Re: Ma script pristup k java objektom?
celé vláknoAno, mal som na mysli ten druhy sposob. Cez parametre by to aj mohlo ist, vdaka.
Re: Ma script pristup k java objektom?
celé vláknoJen je zapotrebi dat si pozor na to, ktera metoda objektu se ve skutecnosti zavola a to kvuli tomu, ze nektere verze Rhina spatne rozeznavaji napriklad Integer a Double (vsechna cisla berou jako Double):
function accessJavaObject(object) {
object.overloaded(new java.util.Date());
object.overloaded('Hello world');
object.overloaded(42);
object.overloaded(1/3.0);
};
V pripade, ze predany objekt ma napriklad metody overloaded(Date), overloaded(Integer) a overloaded(Double).
mame to tu uz
celé vláknotak po dlhsom case som zistil (robim na inej casti aplikacie), ze migraciu dat (mapovanie) mame urobene prave v javascripte
ten skript sa este dokonca generuje z xsd schem
nechcel som verit, ze taketo veci v jave "standardne" pracuju
Nechapu
celé vláknoze presto, ze ma Java oproti jinym jazykum/technologoiim konvence formatovani zdrojovych kodu http://www.oracle.com/technetwork/java/codeconvtoc-136057.html tak na to kaslete a formatujete jak se Vam libi.
Fujtajbl.
Re: Nechapu
celé vláknoTak jen letmym pohledem uvodni zavorka bloku patri na stejny radek jako statement tedy:
try {
this.scriptEngine.eval(stringReader);
} catch (ScriptException e) {
e.printStackTrace();
} finally {
stringReader.close();
}
a ne
try
{
this.scriptEngine.eval(stringReader);
}
catch (ScriptException e)
{
e.printStackTrace();
}
finally
{
stringReader.close();
}
Pak nechapu zalomeni za prirazenim:
final String script =
"1.5/2;";
Vzdy me prepkvapi, kdyz vidim vsemozne ruzne formatovani (vetsinou pochazejici z C/C++) i u nas ve firme, kde vsichni pouzivame Eclipse, ktery ma vychozi formatovani "Java Conventions" a jednoduchym "Ctrl+Shift+F" zformatuje vybrany blok textu nebo cely soubor. Nehlede na to, ze kod ktery sam doplnuje nebo napovida (try nasledovano Ctrl + mezera napr.) je formatovan dle konvenci. Schvalne na Vase zdrojove kody postvete formatovac v Eclipse (nebo jiny, prepodkladam jine IDE delaji neco podoneho) a uvidite v cem je "problem" :-).
Chapu, ze ve svych projektech se clovek temito konvencemi ridit nemusi (nebo na projektu kde si sef urci jinak) ale tady bych cekal opak.
Re: Nechapu
celé vláknoJiste, moje Eclipse to formatuje tak, jak je to uvedene v clanku a mel jsem pro to duvod - hlavni je ten, ze Root.cz ma - nevim proc, to je otazka na designery CSSek - vsechny clanky vysazene do relativne uzkych sloupcu, takze je lepsi formatovani "na vysku" nez "na sirku".
Lidi ze Sunu, kteri sesmolili tu specifikaci, meli opacny problem - nacpat co nejvice ukecaneho Javovskeho kodu na monitory postavene na sirku, proto vymysleli tu normu, na kterou odkazujete (a kterou Snoracle ne presne dodrzuje, viz napriklad zdrojaky OpenJDK).
Btw vy pouzivate odsazeni na tab nebo to je skutecne osm mezer? (ono to neni z prispevku upraveneho redakcnim systemem moc poznat)
Re: Nechapu
celé vláknoNemyslim, ze presunutim uvodnich zavorek bloku na druhou radku usetrite nejake misto do sirky. (spis tipuji na zvyk z C/C++ ala Allman - http://en.wikipedia.org/wiki/Indent_style)
Navic pokud jde o sirku, tam ja sam mam upraveny vychozi formatovac na 160 znaku, protoze vychozich 80 s ohledem na terminaly dnes nema smysl. Proc jste jen neupravil "Maximum line width" na pozadovany pocet znaku v zalozce "Line Wrapping" a nenechal zbytek na formatovaci? Napr. metoda v textu "testInvokeFunctionWithParameters" ma 100 znaku na sirku, neni duvod kratky try catch blok takhle zlamat.
Vim, ze zdrojove kody Javy se tim na mnoha mistech neridi (je to porad jen o lidech), to ale neni duvod to delat take.
Jinak ja pouzivam tab, ale jelikoz v komtentarich se tab pouzivat neda, odmezeroval sem to (Copy Paste asi 8 mezer).
Re: Nechapu
celé vláknoUrcite, porad se presunuju mezi C/C++ a Javou, ta schizofrenie se nekde musi projevit :-) Ale treba pri praci na IcedTea a OpenJDK je vyzadovano urcite formatovani, to se snazim dodrzovat (prepnutim stylu v Eclipse).
Re: Nechapu
celé vláknoNo ono se to lehce tipovalo kdyz jsem kdysi davno cetl Vase OpenGL clanky :-).
Jinak jde mi hlavne o priklad ktery davate treba zacinajicim Javistum, aby nam to pak nepochytili a jeste se nam na takove clanky neodvolavali :-). To je jako kdyz doaleluja lidem vysvetluju, ze mistni rikaj Rigrak a ne Rigrace a pak si tam nakej moula z Horni Dolni da ceduli "Nejlepsi pivo v Rigracich" a hadejte se pak :-). Priklady zktratka tahnou, ty psane tuplem.
Re: Nechapu
celé vláknojeje, to bylo davno ;-)
Mozna ten clanek oznacime jako odstrasujici priklad, jak se to nema delat, ale pro praxi je IMHO dobre nasadit Checkstyle (+ bych urcite pridal Findbugs) a to bud primo na proceduru commit, coz ale nekdy nejde, nebo treba do Hudsonu.
Je to sice buzerace (a kolegove Vas budou proklinat :-), ale pro vetsi projekty asi schudne reseni.

