Předmět Autor Datum
Co například?
Wikan 28.07.2011 18:38
Wikan
Namátkou NIO.2, vychytávka ve VM jménem InvokeDynamic, nový fork/join framework...
MaSo 28.07.2011 18:45
MaSo
Javu neznám, takže mi to moc neřeklo :-D
Wikan 28.07.2011 19:00
Wikan
NIO.2 neznám. DynamicInvoke má .NET už nějaký ten pátek. Pokud to chápu správně tak Fork/Join je "Th…
martin.developer 28.07.2011 23:38
martin.developer
U toho Fork/Join jak název napovídá jde především o Moreover the framework supports recursion, whic…
siberian 29.07.2011 10:51
siberian
Sice starší, ale na ukázku - http://blogs.msdn.com/b/pfxteam/archive/2008/01/31 /7357135.aspx Catchi…
martin.developer 29.07.2011 22:02
martin.developer
V tom článku se nejedná přímo o fork/join, jestli to chápu správně. Tady právě někomu chybí podpora…
siberian 30.07.2011 13:23
siberian
Aha, tak to jsem to fork/join v Javě asi špatně pochopil. Pod názvem "Catching multiple exceptions"…
martin.developer 30.07.2011 13:48
martin.developer
Zavidiet mozes napr. to ze to pobezi aj na 250 inych OS a zariadeniach, nielen na Windows. A to ze j…
MM.. 29.07.2011 22:32
MM..
Osobně mě kromě Windows, Linuxu a Macu nic nezajímá (ohledně vývoje app). Na Windows je .NET na Linu…
martin.developer 29.07.2011 22:44
martin.developer
MM, na zacatek flame je to dobre. Ten Runtine je proste jen Runtime, k nemu potrebujes tuny knihoven… poslední
Jan Fiala 30.07.2011 17:12
Jan Fiala
Už se ti blbové, co píšou instalátor, konečně uschopnili a napsali nějaký rozumný selfupdater, co ne…
touchwood 28.07.2011 22:44
touchwood
Což o to, Flash je na tom ještě dobře - řekne si o admin práva, dostane je, nainstaluje se. Java - ř…
Wikan 29.07.2011 07:44
Wikan
FF se dá přemluvit úplně jednoduše - stačí nastavit práva na adresář a tři klíče v HKLM/Software.
touchwood 29.07.2011 08:38
touchwood
To já vím, ale FF by si to za ty roky taky mohl zařídit sám.
Wikan 29.07.2011 09:56
Wikan
mně teda spíš dost drsně se*e, že furt mění způsob jak se globálně instalují doplňky. U verze 5 jsem…
touchwood 29.07.2011 15:00
touchwood
HKLM/Software browser žebrá o hklm? to snad ne? a k čemu ho ten hňup potřebuje?
kmochna 29.07.2011 16:26
kmochna
[Námět na flame] Už má Java konečně pořádný Garbage Collector? [/Námět na flame]
martin.developer 28.07.2011 23:34
martin.developer
[flame] a ten dotnet už běhá na nějakém opravdovém operačním systému? Zatím jsem to viděl jen na Win…
touchwood 29.07.2011 07:12
touchwood
[Konec flejmu] Zrovna od Javy 7 máš k dispozici: http://download.oracle.com/javase/7/docs/technotes…
siberian 29.07.2011 10:25
siberian

NIO.2 neznám. DynamicInvoke má .NET už nějaký ten pátek. Pokud to chápu správně tak Fork/Join je "The new fork/join model is a Java implementation of a parallel loop.", což v .NETu je taky nějakou chvilku :-)

EDIT: Tak jsem si vyhledal co je to to NIO.2 a pokud to chápu správně je to nové I/O API pro Javu.
Jako "novinky" poukazují třeba na WatchService, což .NET taky má. Nebo taky práci se souborovými atributy - .NET.

Takže, věta do pranice, co mám dále závidět?

U toho Fork/Join jak název napovídá jde především o

Moreover the framework supports recursion, which means, that tasks can create and execute other tasks. This is very important because it allows you to parallelize practically any divide-et-impera algorithm.

než o parallel loop. Jak lehce jde tohle v .NET ale nevím.

No a co bys mohl závidět? Ehm, no, tak třeba Catching Multiple Exception Types. Dokážu si představit, že se to občas může hodit. Dále už nevím. :-D
Seznam novinek je tady: http://www.oracle.com/technetwork/java/javase/jdk7 -relnotes-418459.html Ještě třeba The try-with-resources Statement vypadá na fajn věc. Zase ale, jestli by to v .NET mělo smysl nevím. Já třeba závidím lambda expressions, kde v Javě si budu muset ještě min. rok počkat.

Sice starší, ale na ukázku - http://blogs.msdn.com/b/pfxteam/archive/2008/01/31 /7357135.aspx
Catching Multiple Exception Types máme taky

using System;

namespace ExceptionExample
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                throw new InvalidOperationException("Invalid operation exception!");

                throw new InvalidProgramException("Invalid program exception!");
            }
            catch (InvalidProgramException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch (InvalidOperationException ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                Console.WriteLine("\nDone ...");
            }

            Console.ReadLine();
        }
    }
}

Místo try-with-resources se v C# používá using.
Lambda Expressions je velice dobrá věc, občas mě udivuje jak bez toho Java vývojáři mohou žít :-)

Každopádně, tohle asi dál nevede. Tahle poklidně argumentovat by jsem si mohli asi dlouho :-)
Já jen doufám že Java zapracovala na GC. Je hrůza kolik RAMky si ukousnou primitivní programy typu Esmeska. Taky jsem slyšel že jDownloader či Minecraft si toho ukousnou sakra moc. Myslím si že tady nepůjde o chybu programátorů těch programů.

V tom článku se nejedná přímo o fork/join, jestli to chápu správně. Tady právě někomu chybí podpora pro fork/join v parallel extensions a tady se fork/join řeší jedině přes CountDownEvent, což je klon třídy CountDownLatch z Javy, která tam je od verze 5. Ten fork/join framework od verze 7 by měl právě ještě více ulehčit řešení takových úloh.

Co se týká Catching Multiple Exception Types, tak tím není zrovna myšleno to, co máš v tom příkladu. Zachycování podle jednotlových typů je úplný základ v konceptu výjimek a nedokážu si představit, že by tomu bylo jinak. :-) Jinak ten příklad by ani neměl jít zkompilovat. Na řádku throw new InvalidProgramException("Invalid program exception!"); by měl compiler hlásit něco ve smyslu unreachable code. Ale tak to si zbytečně rypu, protože zrovna ten příklad se dá dobře použít. Catching Multiple Exception Types se tady využije k eliminaci opakujícího se kódu: Console.WriteLine(ex.Message); a vypadalo by to takhle:

catch (InvalidProgramException | InvalidOperationException ex)
{
   Console.WriteLine(ex.Message);
}

Absence lambda expressions se řeší použitím anonymních tříd, ale pokud je jich někdy třeba použit na spoustě místech, začíná to být otravné. Kód by byl vždy čitelnější a méně ukecaný s lambda expressions.

Jinak Java vždycky z principu bude náročnější na paměť než přímo kompilované jazyky a proto třeba .NET na tom nebude o nic lépe a co jsem viděl v bývalé firmě, taky není. Pokud nějaké programy zabírají příliš moc paměti, nevím koho jiného by to měla být chyba, než programátorů. I v jazycích s automatickou správou paměti jde udělat hodně, aby programy žraly zbytečně moc paměti. Viz. třeba memory leaky. Jakýkoliv GC je ten poslední, koho lze vinit. Co může, to samozřejmě uvolnit musí. Při vylepšování GC se většinou soustředí na co nejmenší pauzy (stop-the-world) při jeho práci.

Aha, tak to jsem to fork/join v Javě asi špatně pochopil.

Pod názvem "Catching multiple exceptions" jsem si právě představoval vždy to co jsem uvedl v příkladu, který mimo jiné jde zkompilovat.
Každopádně, to co jsi napsal by se občas hodilo, o tom žádná. V C# to takhle jde taky řešit, ale trošku "oklikou".

try
{
   throw new InvalidOperationException("Invalid operation exception!");

   throw new InvalidProgramException("Invalid program exception!");
}
catch (Exception ex)
{
   if (ex is InvalidOperationException || ex is InvalidProgramException)
   {
     Console.WriteLine(ex.Message);
   }
}

Tak to mi je jasné, ale viděl jsem spoustu programů v Javě s až enormní spotřebou RAM, například program Esmska. Pokud to žere 300MB RAM po chvíli používání, jen díky tomu že programátor je levý, tak to je celkem údiv. Ale viděl jsem další programy, které žerou hodně RAM (u Minecraftu jsem viděl až neuvěřitelnou spotřebu v řádu GB). Buď někteří programátoři neumějí psát, nebo fakt GC má co dohánět. V C# jsem napsal několik aplikací, větších než je třeba Esmska a brala jen zlomek paměti. Stejně jako 3D hra pomocí XNA (C#) taky nebrala v žádném případě paměť v řádech GB. Ikdyž textury, modely a jiné byly komplexnější než to co je v MC vidět.

Osobně mě kromě Windows, Linuxu a Macu nic nezajímá (ohledně vývoje app). Na Windows je .NET na Linux a Mac je Mono, které je v dost použitelné fázi (na úrovni .NET 3.5+). Je faktem že třeba Java běží na mém domácím kině, o tom žádná, v tomhle má třeba Java navrch, ale pro mě to výhoda přímo není.

Byl bych raději kdyby Java aplikace nežraly tuny paměti a v process listu nebyly pod javaw.exe či jiné, ale jako on sám aplikace.exe.

Ad. ohledně té instalace. Na Windows 7 x64 vždy přes Windows update stáhnu nejnovější update či hotfix a mám vystaráno, popravdě jsem nikdy problém neměl (3 desktop PC, 2 notebooky). Možná mám jen štěstí :-)

MM, na zacatek flame je to dobre.
Ten Runtine je proste jen Runtime, k nemu potrebujes tuny knihoven, pak nejaky ten GlassFish server a dalsi javovske vychytavky, ktere jsou kazda pes jina ves je jen par lidi, kteri to dovedou dat vse dohromady tak, aby to delalo co ma.

A na druhou stranu, s podporou .NET ze strany MS to nevidim taky nijak ruzove.

Což o to, Flash je na tom ještě dobře - řekne si o admin práva, dostane je, nainstaluje se.
Java - řekne si o admin práva, dostane je, instalace skoční chybou, že nemá práva.
Firefox - neřekne si o práva, rovnou vyhodí chybu (verze 4 nebo 5 už to možná nedělají, nezkoušel jsem)

Zpět na aktuality Přidat komentář k aktualitě Nahoru