Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: ondra.novacisko.cz 12. 11. 2010, 08:51:04

Název: Co říkáte na try-with-resources statement v JDK 7
Přispěvatel: ondra.novacisko.cz 12. 11. 2010, 08:51:04
Já vím, že o tom bude na rootu ještě článek, přesto bych se už teď chtěl zeptat místních případných Javistů, co říkají nove feature. Já se na to dívám jako céčkař, přesnějí C++čkař, kde funguje automatické volání destruktorů na konci scope.

Z mého pohledu mi to příjde jako látání obrovského problému Javy.  Jeden čas jsem něco podobného řešil zde: http://bredy.novacisko.cz/?Jak-na-destruktory-v-Jave/193  Jukněte mimochodem na datum článku (rok 2007).

Co si ale myslí odkojený javista?

Připomínám, že nová featura je možnost do příkazu try uvést deklarace objektů, které se na konci bloku uzavřou:

Kód: [Vybrat]
try (InputStream fis = new FileInputStream(source);
        OutputStream fos = new FileOutputStream(target)){
 
        byte[] buf = new byte[8192];
 
        int i;
        while ((i = fis.read(buf)) != -1) {
            fos.write(buf, 0, i);
        }
    }
    catch (Exception e) {
        e.printStackTrace();
    }

Název: Re: Co říkáte na try-with-resources statement v JDK 7
Přispěvatel: I 12. 11. 2010, 12:54:03
Jako DB admin to jedine vitam. Programatori v JAVE jsou to nejhorsi co muze spravce DB potkat. Vetsina z nic(hlavne ti z Asie) si mysli ze GC za ne nevyresi dealokaci vsech prostredku(ne jen pameti). S tim ze, program v Jave po sobe nazavira kurzory a konexe s tim se setkavam az prilis casto(behem testovani se na to neprijde), jestli se tohle jednou dostane do praxe tak mi ubyde dost prace.
Název: Re: Co říkáte na try-with-resources statement v JDK 7
Přispěvatel: volca 12. 11. 2010, 13:02:45
Pokud ovsem nebudou programatori zapominat tuhle konstrukci pouzit - jiny projev stejeho problemu.Nechapu proc je takovy problem do javy dodelat konstrukci co by dovolila radne RAII - snad jenom ze uzavirani daneho resource muze hazet vyjimku.
Název: Re: Co říkáte na try-with-resources statement v JDK 7
Přispěvatel: ondra.novacisko.cz 12. 11. 2010, 13:50:46
Pokud ovsem nebudou programatori zapominat tuhle konstrukci pouzit - jiny projev stejeho problemu.Nechapu proc je takovy problem do javy dodelat konstrukci co by dovolila radne RAII - snad jenom ze uzavirani daneho resource muze hazet vyjimku.

Stejně jako v C++. Výjimka nezpůsobí zastavení uzavírání resourců, pouze se zaznamená a pak vyletí na konci té zavírací sekvence. Přitom se prostředek považuje za uzavřený i přesto, že skončil s výjimkou. Jak řešit double-exception, to si netroufnu navrhovat, v C++ to končí na terminate :-)
Název: Re: Co říkáte na try-with-resources statement v JDK 7
Přispěvatel: Marek 12. 11. 2010, 14:09:02
To je to podobné jako C# using(){}?