Ahoj,
k situaci PROBLEM od verze 1.5 dojit nemuze. Drive to mozne bylo, ale od 1.5
ma Java vylepseny pametovy model a ten zarucuje, ze v okamziku, kdy new vrati
referenci, je objekt inicializovany (tj. probehl jeho konstruktor).
Je vsak mozne neco jineho (mapa je sdilena promenna typu Map):
Cituji z emailu od Lukas Barton [EMAIL PROTECTED]:
Zdeněk Troníček wrote:
Ahoj,
k situaci PROBLEM od verze 1.5 dojit nemuze. Drive to mozne bylo, ale od
1.5
ma Java vylepseny pametovy model a ten zarucuje, ze v okamziku, kdy new
vrati
referenci, je objekt inicializovany (tj. probehl
Cituji z emailu od Lukas Barton [EMAIL PROTECTED]:
Zdeněk Troníček wrote:
Ano, muze dochazet k prehozeni instrukci (muze to provest compilator, JIT,
nebo
to muze byt dusledek cache). Toto je ovsem vyjimka. Viz specifikace na str.
322:
Just before a reference to the newly created
Cituji z emailu od Lukas Barton [EMAIL PROTECTED]:
Zdeněk Troníček wrote:
To samozrejme platit musi - spravne receno, JIT si muze instrukce
prehazet jak chce, pokud to neovlivni beh programu. Specifikace nerika,
jak ma fungovat JIT. Rika jak mate jeho fungovani vnimat.
Ale nikde se tam
Cituji z emailu od Lukas Barton [EMAIL PROTECTED]:
Zdeněk Troníček wrote:
Tak jeste jednou:
Trida p = new Trida();
V okamziku kdy new vrati odkaz na nove vytvoreny objekt, je tento objekt
inicializovan (zajistuje to tzv. Initialization safety). To implikuje napr.
to,
ze finalni
Cituji z emailu od Lukáš Marek [EMAIL PROTECTED]:
Hmm. Hezke. To ovsem neni ani nahodou odpoved na moji otazku Jak muze
vlakno
ziskat odkaz na objekt vytvareny v jinem vlakne drive nez dojde k navratu z
new.
treba tak, ze v konstruktoru preda odkaz na this nekam jinam.
(viz:
specifikovano, jak to klient vidi. Nikoliv jak je to na konkretnim
databazovem serveru implementovane. Ten si muze delat jakakoliv kouzla
(a delat je bude aby dosahl lepsiho vykonu).
Zdeněk Troníček wrote:
Toto v Jave neni mozne. K alokaci pameti v JVM slouzi instrukce new, jejimz
parametrem
jasne, ze ten Vas pseudokod vyse je nerealny.
Z.T.
--
Zdenek Tronicek
Department of Computer Science and Engineering
Prague tel: +420 2 2435 7410
http://cs.felk.cvut.cz/~tronicek
Quoting Lukas Barton [EMAIL PROTECTED]:
Zdeněk Troníček wrote:
Ja jsem ten kod uvadel proto, aby
Dobry den,
ano, takto to lze.
Z.T.
--
Zdenek Tronicek
FIT CTU in Prague
Dusan Zatkovsky napsal(a):
Ahoj.
Laborujem trosku s Hibernate a $SUBJ. V principe mi ide o toto:
Mam niekolko tabuliek, ktorych primarnym klucom su vzdy 2 stlpce ( int,
int )
a tymito integermi su prepojene. K tomu
Zajímají vás webové technologie? Chcete vědět, co je nového v Java Server
Faces 2.0? Pak neváhejte a přihlaste se na první CZJUG webinář. Během 1,5
hodiny projdeme základní vlastnosti JSF a napíšeme jednoduchou aplikaci. A
vy můžete být přitom, aniž byste někam jezdili. Zúčastnit webináře se
totiž
Ahoj,
lepsi nez em.flush() je chytat vyjimku po skonceni transakce. Bude to
RollbackException. Napr.:
try {
em.getTransaction().begin();
Programmer p = em.find(Programmer.class, 1L);
em.remove(p);
em.getTransaction().commit();
} catch (RollbackException e)
Máte pocit, že Enterprise Java Beans je složitá technologie a že ke
zvládnutí Java Persistence API je potřeba několik měsíců? Pak neváhejte a
přihlaste se na druhý CZJUG webinář. Během 1,5 hodiny projdeme
nejdůležitější vlastnosti těchto technologií a napíšeme jednoduchou
aplikaci. A vy můžete být
Dobry den,
predavat data z formulare pres GET neni dobry napad. GET by mel byt bez
vedlejsiho efektu.
Z toho, co pisete, bohuzel nevim, proc to delate.
Mozna by se Vam vsak mohlo hodit f:event type=preValidate
Z.T.
--
Zdenek Tronicek
FIT CTU in Prague
Petr Prikryl napsal(a):
Dobry
Ahoj,
jak ten dotaz vypada? Nejde pouzit em.createNativeQuery(...)?
Z.
--
Zdenek Tronicek
FIT CTU in Prague
Dusan Msk napsal(a):
Ahoj.
Potreboval by som exec-nut cisty sql command pomocou hibernate. Bolo mi
odporucene na to pouzit Session, co je zaroven kamen urazu.
Vyrobil som EJB
Dobry den,
tohle je typicke pro privandrovalce z jazyka C (nic ve zlem, C je super
jazyk). Tito programatori chteji u kazdeho prikazu vedet, jak se prelozi a
jak se provadi (to samo o sobe samozrejme neni spatne, spis naopak) a pak
se snazi pouzivat ty nejefektivnejsi konstrukce.
Jakkoliv se to
Oto Buchta napsal(a):
b) trošku mi to připomíná schizofrenii jednoho známého webdesignéra.
Dostal za úkol vyvinout velkou JavaScriptovou aplikaci. Vyvíjel ji na
MACovi a safari a za pár měsíců byla téměř hotová. Chybělo posledních
pár bezvýznamných nedodělků, když dostal za úkol rozchodit
radeji), ze to jvm vykona mnohem rychleji.
Jednou jsem si chtel ten druhy argument overit a vysledkem byl muj
prispevek
do konference tak tedy, proto jsem se na tohle ptal.
Zdeněk Troníček writes:
Dobry den,
tohle je typicke pro privandrovalce z jazyka C (nic ve zlem, C je super
jazyk
Oto Buchta napsal(a):
We should forget about small efficiencies, say about 97% of the time:
premature optimization is the root of all evil.
Prestoze je tento citat o necem malinko jinem, presto s nim
nesouhlasim. Presto si samozrejme mnoho z vas spolu s Cimrmanem rekne:
Je mozne, ze se vam
Oto Buchta napsal(a):
Tato debata presne ukazala, ze lide se deli na profileristy a
premyslivce (pozor, ani jedno neni mysleno hanlive!).
Typicky profilerista odpovi o zbytecnosti male optimalizace, o
dulezitosti zachovani citelnosti kodu, nutnosti overit i jinde (jine
JVM, stroj, , GC ci
Jak to Josh Bloch myslel nevim, ale ze muze byt rychlejsi nez me
neprekvapuje. Pri pouziti procesor muze vyhodnocovat operandy paralelne,
zatimco u musi pockat, jak dopadne vyhodnoceni prvniho operandu. Takze
pokud jsou operandy nezavisle a procesor vicejadrovy, tak to bude mozna i
docela
nutne , aby sa druhy vyraz dal
vobec vyhodnotit : person!=null person.isValid()
R
Zdeněk Troníček wrote:
Jak to Josh Bloch myslel nevim, ale ze muze byt rychlejsi nez me
neprekvapuje. Pri pouziti procesor muze vyhodnocovat operandy
paralelne,
zatimco u musi pockat, jak dopadne
JIT to muze poznat i kdyz operand obsahuje volani metody, protoze bezne
provadi method inlining (pri nem je volani metody nahrazeno jejim
telem).
Inlining se nedela vzdy (zalezi to na typu a velikosti metody a
konfiguraci JVM), nicmene ve spouste pripadu ano.
V kombinaci s operandy, ktere testuji
Myslel jsem v tom uz mame jasno: takovouto optimalizaci je lepsi nechat na
prekladaci.
K @Immutable: tuto anotaci zminuje jiz Brian Goetz a spol. v Java
Concurrency in Practice z roku 2006. Jeji pouziti ma vsak i uskali: napr.
String neni ciste immutable, protoze ma atribut, ve kterem si uklada
Obcas pouzivam paralelizaci, kdyz chci vyuzit muj dvoujadrovy procesor:
ExecutorService pool = Executors.newFixedThreadPool(Config.poolSize);
pool.submit(new IssueFilterTask(0, 4));
pool.submit(new IssueFilterTask(5, 9));
pool.shutdown();
Jinak souhlas s ConcurrentHashMap. Ta
V navaznosti na diskuzi prochazet pole odzadu ci odpredu si dovoluji
nabidnout skript pro refaktorovaci framework RefactoringNG, pomoci nehoz
muzete snadno zmenit
for (int i = p.length - 1; i = 0; i--) { ... }
na
for (int i = 0; i p.length; i++) { ... }
Je to trosku delsi, nicmene verim, ze
Ladislav Thon napsal(a):
Použil někdy někdo z Vás balík
java.util.concurrent? A pokud ano, používáte to běžně?
Jasně. Bez ConcurrentHashMap (proboha, proč si každý projekt musí psát
vlastní ConcurrentHashSet?! To těch dvacet řádek nemohli dát k tomu?!),
Atomic* a Executor* si nedovedu
Na detailech urcite zalezi. A na kontextu take. I kdyz JVM implementuje
synchronizaci vzdy stejne, napr. pomoci instrukce Compare-And-Swap (CAS),
je zde prostor pro optimalizaci: JVM si napr. muze vsimnout, ze zamek je
pouzivan jen jednim vlaknem a zcela jej eliminovat. Nebo muze sdruzit vice
Ahoj,
vzdyt tam mas pretypovani na List?. Tak si nejsem jisty, jak jsi to
myslel. Jinak cyklus
for (Employee e : list) {
...
}
bude pred prekladem (ve fazi desuggaring) nahrazen cyklem
for (IteratorEmployee i = list.iterator(); i.hasNext(); ) {
Employee e = i.next();
...
}
Tedy cyklus
linuxu neprojde, kdyz se typove
parametry odmazavaji. Jo to pripadne JRE bug?
2010/8/10 Zdeněk Troníček troni...@fit.cvut.cz:
Ahoj,
vzdyt tam mas pretypovani na List?. Tak si nejsem jisty, jak jsi to
myslel. Jinak cyklus
for (Employee e : list) {
...
}
bude pred prekladem (ve fazi
Tak jsem to zkusil na Solarisu a checkcast tam je take. Pri podrobnejsim
zkoumani jsem prisel na to, ze kdyz to pod Windows prekompiluju pomoci
build v NetBeans (vysledkem je jar), tak v jaru se checkcast objevi.
Nicmene v adresari build\classes je class soubor bez instrukce checkcast.
Takze moje
Cislo portu prideluje operacni system a vetsinou to dela nahodne. Jinak
trida ServerSocket ma metodu setSocketFactory, kterou se nastavuje
SocketImplFactory. Zkousel jsi naimplementovat vlastni SocketImplFactory?
Z.
--
Zdenek Tronicek
FIT CTU in Prague
el.wond...@centrum.cz napsal(a):
Ahoj,
V ramci jedne transakce muzete vkladat (em.persist) entity v libovolnem
poradi. Framework by mel zavislosti mezi entitami poznat a odpovidajici
INSERTy provest ve spravnem poradi, prip. si poradit jinak. Protoze mezi
entitami mohou byt cyklicke zavislosti, musi framework zavislosti nejak
resit.
Dobrý den,
rád bych vás tímto pozval na přednášku CZJUG o agilních metodách.
Přednáška proběhne 18.10. na Fakultě informačních technologií ČVUT v Praze
(Nová budova Masarykovy koleje, Kolejní 550/2) v místnosti MK-103 (v
suterénu). Začátek v 18 hodin. Více informací níže.
Z.T.
--
Zdenek
Takhle to funguje pro strategy s hodnotou GenerationType.AUTO. Tj. pokud
id prideluje framework (Hibernate, EclipseLink,...), lze mu id nadiktovat.
Pak je jeste nutne upravit hodnoty v tabulce SEQUENCE, protoze jinak mohou
nasledujici em.persist(...) skoncit chybou duplicitni hodnota primarniho
Ahoj,
vypadá to, že hned po GC-- následuje vždy Full GC. I časy souhlasí, takže
to vypadá, že GC-- by mohla být hláška nepodařilo se mi uvolnit pamět
pomocí Minor GC, spouštím Full GC.
Kde došlo ke snížení na 8 GB? Já tam vidím pořád 12 GB:
2010-11-09T14:08:17.470+0100: 71707.559: [GC
Konstrukci ? extends Neco bych nezavrhoval, protoze je užitečná pro
parametry metody.
Př.: metoda, která provede nějakou operaci se všemi prvky seznamu, v němž
je každý prvek typu Number.
void perform(List? extends Number p) {
for (Number n : p) {
process(n);
}
}
void
Ahoj,
vlákno by mělo rozhodovat o ukončení samo. Aplikace může např. nastavit
příznak, vlákno jej bude periodicky testovat a při změně hodnoty skončí.
Pokud by vlákno mohlo být blokované, lze použít interrupt().
Jinak z toho co píšeš se mi zdá, že backend by mohla být obyčejná javovská
aplikace
A nešlo by v destroy nebo lépe v contextDestroyed počkat na konec vláken?
Buď přes join nebo prostě jen nějakou dobu počkat (sleep) s tím, že vlákna
skončí?
Z.
--
Zdenek Tronicek
FIT CTU in Prague
Vladislav Krejcirik napsal(a):
To aby to byla webova aplikace byl pozadavek, bohuzel s tim nic
Vladislav Krejcirik napsal(a):
Pres join by to jit melo, co myslite? Zkousim hledat v user guide
tomcatu jestli neobsahuje podporu pro managing vlaken.
Dne 29.11.2010 11:06, Zdeněk Troníček napsal(a):
A nešlo by v destroy nebo lépe v contextDestroyed počkat na konec
vláken?
Buď přes join
Krejčiřík
http://www.vkrejcirik.info
Dne 29.11.2010 20:34, Zdeněk Troníček napsal(a):
Nevím co přesně hledáte, ale v Javě není možné ukončit násilně vlákno,
když nepočítám metodu stop, která je z dobrého důvodu deprecated. A i
kdyby taková možnost byla, tak byste ji neměl používat ze stejného
Ahoj,
nevim jak Oracle AS, ale GlassFish umožňuje upgrade aplikace bez výpadku
služby. Je však potřeba mít cluster. Tento upgrade se v dokumentaci
jmenuje rolling upgrade a probíha zhruba takto:
Vybereme jednu instanci, přestaneme na ni směřovat nové požadavky (tím, že
upravíme konfiguraci load
Mail server z nějakého důvodu požral jednu moji odpověď.
Z.
--
Zdenek Tronicek
FIT CTU in Prague
--- Původní zpráva
Předmět: Re: Skriptovani v Eclipse
Od:Zdeněk Troníček troni...@fit.cvut.cz
Datum: 20 Leden 2011, 13:04
Komu
RefactoringNG zatím běží jen v NetBeans a bohužel není tak obecný jako
Eclipse Monkey, protože je zaměřen jen na refactoring.
Příklad použití (záměna Hashtable za ConcurrentHashMap) je zde:
http://netbeans.dzone.com/refactoringng/bye-bye-hashtable
Z.
--
Zdenek Tronicek
FIT CTU in Prague
Filip
Ten plugin se jmenuje Jackpot a skutečně teď trochu usnul.
Z.
--
Zdenek Tronicek
FIT CTU in Prague
Tomas Hubalek napsal(a):
Asi je muj komentar trosku off topic, ale premyslim nad tim, jak asi
vypada a jak je asi (z hlediska OOP) navrzeny projekt, ktery potrebuje
mit skripty na refactoring.
Proč? Pokud se bude projekt dále rozvíjet, tak testy smysl mají. Už jen
pro to, aby člověk poznal, že přidáním něčeho nového nic starého
nerozhodil. Já sám používám oba způsoby psaní testů: před napsáním kódu i
po a nikdy jsem neměl pocit, že by byly zbytečné.
Z.
--
Zdenek Tronicek
FIT CTU in
Popis reprezentace desetinných čísel v češtině je zde:
https://users.fit.cvut.cz/~tronicek/java/Ukazka.pdf
Z.T.
--
Zdenek Tronicek
FIT CTU in Prague
Michal Pavlasek napsal(a):
pohybliva desatinna ciarka prinasa niekolko niekedy necakanych prekvapeni
:)
odporujucich sedliackemu rozumu,
Kdybyste se toho chtěli zbavit, tj. např.
String s = new String( Daka hodnota stringu );
přepsat na
String s = Daka hodnota stringu;
lze to snadno provést v nástroji RefactoringNG domácí provenience.
Příslušné pravidlo je toto:
NewClass {
null,
ListTree { },
Identifier
Jazyk by měl být intuitivní, s tím souhlas. Nicméně pokud jde o
optimalizaci řetězců, tak Java její používání nevyžaduje, ale nabízí.
Pokud ji nechceš, používej new String(). Pokud by si Java optimalizaci
řídila sama, tak by new String() mohlo vrátit stejnou hodnotu jako nějaké
předchozí new
Dobrý den,
mohl bych vědět, na co to používáte?
Z.
--
Zdenek Tronicek
FIT CTU in Prague
Dušan Kolář napsal(a):
Zdravím konferenci,
před lety jsem používal nástroj Spoon (
http://spoon.gforge.iniria.fr/ ) celkem úspěšně na změny ve zdrojácích,
které se generovaly (ne zcela korektně) a
to
na něčem vyzkoušet. Jenom mne napadlo, že by to mohlo řešit váš problém.
Ale
jestli se nepletu, autorem nebo spoluautorem je Zdeněk Troníček, který na
váš dotaz také reagoval, ten na vaše otázky asi bude umět odpovědět lépe.
Z toho, co jsem o tom zaznamenal – podpora pro typy tam je, ten
Nerad bych tady vyvolal nějakou flame war, ale ukazatelová aritmetika to
podle mého názoru je. Např. v metodě writeToMem je p ukazatel (obsahuje
adresu) a k tomuto ukazateli se přičítá 2, tj. sečte se ukazatel a int a
výsledkem je ukazatel:
static void writeToMem(Unsafe u, long p, byte[]
naimplementovano dle von
Neumanna. A udelat to samozrejme lze. Proto je take Unsafe v sun.misc .
Dne 4. března 2011 19:01 Zdeněk Troníček troni...@fit.cvut.cz
napsal(a):
Nerad bych tady vyvolal nějakou flame war, ale ukazatelová aritmetika to
podle mého názoru je. Např. v metodě writeToMem je p ukazatel
Glassfish má konfigurační parametr Maximum Number of Unconsumed Messages,
kterým lze počet uložených zpráv omezit. Je-li topic plný, odesílatel
dostane výjimku.
Z.T.
--
Zdenek Tronicek
FIT CTU in Prague
Vlastimil Elias napsal(a):
BTW tady se skrývá jedno provozní nebezpečí které není na
?
2011/4/1 Zdeněk Troníček troni...@fit.cvut.cz:
Nejde ani tak o viditelnost metody, ale o to, zda je metoda součástí
API.
Klíčové slovo assert kontroluje podmínku, o které je programátor
přesvědčen, že platí. Motivací pro používání assert je snaha dozvědět se
co nejdříve o tom, že je něco
.
2011/4/3 Zdeněk Troníček troni...@fit.cvut.cz:
Asi Ti moc nerozumím. To myslíš tak, že budeš na produkci testovat, zda
nevoláš metodu se špatnými parametry a pokud ano, tak vyhodíš výjimku?
To
mi připadá na stejné úrovni jako chytání ArrayIndexOutOfBoundsException
pro případ, že bychom použili
Ahoj,
automat by měl mít číst něco ze vstupu. Nechybí tam někde vstup?
Z.
--
Zdenek Tronicek
FIT CTU in Prague
Tomas Studva napsal(a):
Dobry den,
vedeli by ste si precitat nasledovny program. Nie je to priklad zo skoly
ale
z praxe. Implementacia stavoveho automatu, kod je stary 10 rokov a
Přeposílám pozvánku na přednášku.
Z.T.
--
Zdenek Tronicek
FIT CTU in Prague
Vážené kolegyně a kolegové,
zvu Vás na další přednášku v rámci Přednáškového cyklu Informatické večery
na téma: VIRTUALIZACE A CLOUD COMPUTING
konanou v úterý, dne 26.4.
tentokráte v NTK, v Ballingově sále(!!),
Patrně to byl bug, protože v JDK 1.6.0_23 ten příklad přeložit jde.
Jinak spíš než o odvození typu jde o kompatibilitu dvou typů s ? na pozici
typového parametru.
Z.
--
Zdenek Tronicek
FIT CTU in Prague
Ladislav Thon napsal(a):
Já kupříkladu narazil na rozdíly v kompilaci při volání metody
Jakou máte verzi JDK? Mně to přeložit jde.
Z.
--
Zdenek Tronicek
FIT CTU in Prague
Martin Schayna napsal(a):
Můžu odpovědět jen na tu poslední část: problém ve zmíněném příkladu
nemá co dělat s použitým JRE. To je jen problém kompilátorů jak
porozumí kódu a jaký vygenerují nízkoúrovňový
Ahoj,
protože typový parametr není za běhu k dispozici. Při překladu jej
překladač odstraní. Např.
class BoxT {
T t;
Box(T t) { }
}
se přeloží jako
class Box {
Object t;
Box(Object t) { }
}
Pokud potřebuješ v konstruktoru typový parameter, lze to udělat přes
parametr typu Class:
Dobrý den,
zpětná kompatibilita je limitující, ale bohužel to bez ní nejde. Pokud by
nová verze nebyla kompatibilní s tou předchozí, šlo by vlastně o nový
jazyk a to by Javě podle mého názoru spíš uškodilo.
Na druhou stranu je ale pravda, že lpění na co nejvyšší kompatibilitě s
předchozí verzí
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.
Spíše než o jednoduchosti jazyka je to o úrovni abstrakce. Tj. jakou
zvolit
Třída OpenComponentAction je docela krátká:
54 final class OpenComponentAction implements ActionListener {
55 private TopComponent component;
56 private final Map?,? map;
57
58 OpenComponentAction(TopComponent component) {
59 assert component != null;
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íš?
Closures budou zpětně kompatibilní. Možná ne ze 100%, ale téměř jistě se
to číslo bude 100 blížit.
Z.
--
Zdenek Tronicek
FIT CTU in Prague
x y napsal(a):
ano ide o citatelnost(to som aj uviedol .. z dovodu sprehladnenia..) a
to
prispieva k rychlosti vyvoja, da sa to riesit urcite na urovni
Dobrý den,
já na použití foreign ID nevidím nic špatného.
Naproti tomu nadměrné používání asociací (OneToMany, ManyToOne,...) vede k
problémům, protože je pak propojeno všechno se vším. A může se stát, že
vyčtením jedné entity vyčtete půlku databáze.
Tj. asociace ano, ale s mírou.
Z.T.
--
Jiří Hradil napsal(a):
Jinak pokud bych mel definovat velky system, tak to pro me znamena
jeho odpovednost a mnozstvi prace kterou poskytne a lidem usetri.
Udaje jako pocet trid, pocet radku a mnozstvi dokumentace nepovazuji
za rozhodujici. Maji jistou vypovidajici hodnotu, ale nelze je brat
Dobrý den,
myslím, že při rozhodování, kterému jazyku či technologii se profesionálně
věnovat, je dobré se podívat na počty pracovních míst, které jsou pro
tento jazyk či technologii nabízeny.
Viz např.
http://regulargeek.com/2011/02/09/web-scripting-programming-language-job-trends-february-2011/
aplikacnich frameworku to plati
mozna dvojnasob. Jirka hrozne flamuje, ale libi se mi to, protoze to
nuti vsechny k zamysleni jestli prave onomu svatemu gralu nepodlehli
;-).
2011/7/17 Zdeněk Troníček troni...@fit.cvut.cz:
Dobrý den,
myslím, že při rozhodování, kterému jazyku či technologii se
na SVN, nebo tvrdit, ze psani jednotkovych testu
nepotrebuji a nepretrzita integrace je blbost. Mozna mas z
akademickeho prostredi jine zkusenosti?
Diky,
Jirka
2011/7/18 Zdeněk Troníček troni...@fit.cvut.cz:
Jak jsi k tomu došel? Já osobně neznám ve svém okolí nikoho, kdo by si
myslel, že
Tohle platí nejen v oblasti frameworků, ale třeba i pro vlastnosti jazyka.
Do produkčního jazyka jako je Java by neměly být přidávány neprověřené
konstrukce, protože to může napáchat více škody než užitku. Lepší je
počkat, zda se tyto osvědčí jinde (např. v nějakých experimentálních
jazycích) a
Toto je důsledek toho, že String[] je potomkem Object[]. Kdyby to tak
nebylo, nemohli bychom z metody vracející Object[] vrátit nic jiného než
právě toto pole a do metody s parametrem typu Object[] bychom mohli předat
pouze toto pole. A to by bylo dost omezující.
Z.
--
Zdenek Tronicek
FIT CTU in
Dobrý den,
jakého typu je persistentní kontext? Jestliže TRANSACTION_SCOPED, tak na
konci transakce (při prvním commitu) jsou všechny entity převedeny do
stavu detached a při druhém commitu není v persistentním kontextu žádná
entita a tudíž se do databáze nic nezapíše.
Z.T.
--
Zdenek Tronicek
(žádné aplikační servery apod.),
takže persitentní kontext bude zřejmě TRANSACTION_SCOPED. Nebo může být
extended i v JSE?
BTW: Je nějaký způsob jak zjistit v jakém ze stavů (new/transient,
managed,
detached, removed) se právě entita nachází?
Děkuji
Libor
Dne 5. září 2011 9:54 Zdeněk
Dobrý den,
kovariance a kontravariance s tímto nesouvisí (navíc Java kovariantní
return má). Váš příklad
IterableObject o = new ArrayListString();
nejde přeložit jednoduše z toho důvodu, že v Javě není IterableString
potomkem IterableObject.
A to z jednoduchého důvodu. Kdyby např. ListString
in Prague
Dne 20. září 2011 8:02 Zdeněk Troníček troni...@fit.cvut.cz napsal(a):
Dobrý den,
kovariance a kontravariance s tímto nesouvisí (navíc Java kovariantní
return má). Váš příklad
IterableObject o = new ArrayListString();
nejde přeložit jednoduše z toho důvodu, že v Javě není
Ladislav Thon napsal(a):
- V Javě je IterableString potomkem IterableObject protože je to
v reálu ten samej objekt - pouze překladač nás může chránit tak jako máte
ve
2 příkladě.. (to samé pro List)
IMHO nejlepší je dívat se na parametrizované třídy jako na funkce, které
vytváří normální
Petr Balat napsal(a):
Nicméně myslím si že je důležitější vědět jak se generiky mají v plném
kontextu, takže i vlastnosti jvm, proto ten komentář.
Aby se začátečník nespletl např. při kontrole instanceof apod. kde ten
rozdíl mezi runtime a kompilaci je potřeba znát.
Pokud v Javě použijete
kontrola pro další část kódu užitečná.
//v .net by to za runtime spadlo
Petr
Dne 20. září 2011 15:15 Zdeněk Troníček troni...@fit.cvut.cz
napsal(a):
Ladislav Thon napsal(a):
- V Javě je IterableString potomkem IterableObject protože je to
v reálu ten samej objekt - pouze překladač nás může
:-)
Petr
Dne 20. září 2011 23:41 Zdeněk Troníček troni...@fit.cvut.cz
napsal(a):
Podle mého názoru jsou generické typy v .NET trochu lepší. Hlavní
argument
je ten, že odmazaní typového parametru vede k tomu, že jej nelze použít
např. za new nebo instanceof. A to většina programátorů
AspectJ sice zvládne i privátní metody, ale neumí měnit třídy z balíku java.
Z.T.
--
Zdenek Tronicek
FIT CTU in Prague
Michal Eibl napsal(a):
Ano, bylo mysleno mit hlidanou finalize().
AspectJ by nemel mit problem nejen s protected ale ani s private.
M.
On 22.9.2011 9:16, Vaclav
Vážené kolegyně a kolegové,
dovolte mi pozvat Vás na úvodní přednášku z cyklu Informatické večery
na FIT ČVUT v Praze.
Tradiční cyklus zahajuje v tomto semestru Mgr. Jiří Donát Ph.D.
přednáškou na téma **
**
*Budoucí podoba IT průmyslu v době cloud computing*
Přednáška se koná ve středu 5.
Dobrý den,
začínáte s programováním a zajímá vás Java? Pak je tu pro vás zdarma
učebnice tohoto programovacího jazyka.
Více na http://java.cz/article/ucebnicejazykajava.
Z.T.
--
Zdenek Tronicek
FIT CTU in Prague
Vážení přátelé,
dovolte mi, abych Vás informovala o další přednášce z cyklu Informatické
večery na FIT ČVUT v Praze a to již zítra, *16.11.2011 od 18:00 hodin*.
V rámci cyklu Informatických večerů na FIT ČVUT v Praze se tuto středu
představí webový startup Kari http://kari-vydaje.cz.
Dobrý den,
toto bohužel není moje parketa. Kdybyste chtěli např. JavaServer Faces,
Java Persistence API a Glassfish, tak ano.
S pozdravem,
Z.T.
--
Zdenek Tronicek
FIT CTU in Prague
Petr Kabátek napsal(a):
Dobrý den. Chtěl bych se zeptat jestli by byla možná konzultace(školení) v
oblasti
Ahoj,
dal bych prednost asynchronnim metodam v EJB 3.1.
Z.
--
Zdenek Tronicek
FIT CTU in Prague
Petr Franta napsal(a):
Chtěl jsem se zeptat na váš názor nebo zkušenost s prací ve vláknech J2EE
aplikací?
Četl jsem doporučení, že by se vlákna neměla v J2EE vytvářet resp., že
jsou
Ahoj,
pamet i celkovy pocet vlaken se mi zdaji v poradku. Podival bych se na
pocet otevrenych souboru. Nejsou tam nejake pracovni soubory?
Z.
--
Zdenek Tronicek
FIT CTU in Prague
Jaroslav Hurdes napsal(a):
To je v pořádku, nepsal jsem, že daná aplikace je jediná na PC, Ve
skutečnosti je tam
Dobry den,
kdyz jedno vlakno priradi do volatile promenne a a druhe vlakno do
volatile promenne f, tak se prirazeni take nevykonaji paralelne, protoze
pristupy do pameti se (vetsinou) serializuji.
Navic nam je jedno, jak se to vykona. Dulezity (z hlediska ekvivalence) je
vysledek. A ten je v obou
Dobry den,
redisTemplate.getConnectionFactory().getConnection().openPipeline();
...
redisTemplate.getConnectionFactory().getConnection().closePipeline();
Provadite openPipeline() a closePipeline() nad stejnym Connection?
Z.T.
--
Zdenek Tronicek
FIT CTU in Prague
Ivan Polak napsal(a):
89 matches
Mail list logo