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/questions/2220763/java-specific-enums-and-generic-enum-parameters
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):
>>
>> >Eclipse kompilator se da pouzit i standalone, je nejaky duvod
proc ho tak
>> >nemuzes pouzit v build procesu?
>>
>> Zřejmě není, nejspíš na něj přejdeme. Budeme ale muset vyřešit,
že je to
>> pro Javu 1.5.
>> Omlouvám se za odmlku, nějak mi toto vlákno vypadlo z pozornosti.
>> Díky Romane :-)
>>
>> Tomáš
>>
>>
>> ================================================
>> ...with Ultimate flying is so easy...
>> http://www.frisbee.cz http://www.peaceegg.net
>> ================================================
>>
>>
>>
>>
>>
>> ______________________________________________________________
>> > Od: "Roman Pichlík" <roman.pich...@gmail.com
<mailto:roman.pich...@gmail.com>>
>> > Komu: Java <konference@java.cz <mailto:konference@java.cz>>
>> > Datum: 25.03.2011 11:10
>> > Předmět: Re: javac vs. Eclipse - čísla řádků v .class u
víceřádkových
>> > výrazů
>> >
>> >Eclipse kompilator se da pouzit i standalone, je nejaky duvod
proc ho tak
>> >nemuzes pouzit v build procesu?
>> >Dne 24.3.2011 12:11 "Tomáš Záluský" <zalu...@centrum.cz
<mailto:zalu...@centrum.cz>> napsal(a):
>> >>
>> >> Dobrý den,
>> >>
>> >> narazil jsem na zajímavý problém s generováním čísel řádků
do class
>> >souboru.
>> >> Následující minimalizovaný program vyhodí výjimku, ale
stacktracy se
>> >> liší
>> >číslem řádky podle toho, čím byl program zkompilován.
>> >>
>> >> public class SourceLines {
>> >>
>> >> public static class Foo {
>> >> public Foo withHoo(String hoo) {
>> >> return this;
>> >> }
>> >> }
>> >>
>> >> public static String n() {
>> >> return null;
>> >> }
>> >>
>> >> public static void main(String[] args) throws Exception { //
toto je
>> >> radek
>> >13
>> >> Foo f = new Foo()
>> >> .withHoo("x")
>> >> .withHoo(n().toUpperCase());
>> >> }
>> >>
>> >> }
>> >>
>> >> Pokud je program zkompilován Eclipsem, vypíše se:
>> >>
>> >> Exception in thread "main" java.lang.NullPointerException
>> >> at SourceLines.main(SourceLines.java:16)
>> >>
>> >> Pokud je program zkompilován pomocí javac -g, vypíše se:
>> >>
>> >> Exception in thread "main" java.lang.NullPointerException
>> >> at SourceLines.main(SourceLines.java:14)
>> >>
>> >> Disassemblováním class souboru zjišťuji, že Eclipse při
zkompilování
>> >respektuje jednotlivé řádky, na kterých se nachází zřetězené
metody,
>> > zatímco
>> >javac to nahází na jeden řádek. Použil jsem
>> >http://java.decompiler.free.fr/, ale stejný závěr je zřejmý i
z volání
>> >javap -l -c.
>> >>
>> >> Nevíte, zda se dá javac v tomto nějak ovlivnit? Všude jsem
našel jen
>> >> popis
>> >k přepínači -g, ale nic nenasvědčuje, že by to šlo ještě zjemnit.
>> >(Mimochodem JDK7 developer preview se chová stejně.) Přijde mi
to jako
>> > dost
>> >podstatná nevýhoda pro používání fluent API, protože to
vylučuje zapsání
>> >vnořeného výrazu do parametru volané metody.
>> >>
>> >> Nepovažuji vnořené výrazy za obecně dobrou praktiku, ale
někdy to nejde
>> >jinak, aniž by se snížila čitelnost. Výše uvedený příklad je z
praxe, kdy
>> >jsme takto hledali NullPointerException v řetězu přes jednu
stránku.
>> >Vyvíjeno pod Eclipsem, zkompilováno Mavenem (JDK javac),
nasazeno na
>> > Tomcat
>> >(JDK java).
>> >>
>> >> Či znáte jiné alternativy?
>> >>
>> >> Děkuji!
>> >>
>> >> Tomáš Záluský
>> >>
>> >>
>> >>
>> >> ================================================
>> >> ...with Ultimate flying is so easy...
>> >> http://www.frisbee.cz http://www.peaceegg.net
>> >> ================================================
>> >
>> >
>
>