Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zashto ne postoji destruktor?

[es] :: Java :: Zashto ne postoji destruktor?

[ Pregleda: 3492 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

karas

Član broj: 5574
Poruke: 482
*.246.EUnet.yu



+1 Profil

icon Zashto ne postoji destruktor?23.08.2003. u 13:49 - pre 200 meseci
Bruce Eckel savetuje da sve zavrshne radnje nekog objekta izvedem u finally bloku. Zar nije bilo lakshe tvorcima Jave da omogucce destruktor ili barem da garantuju izvrshavanje finalize() odmah po bacanju objekta u smecce?

Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

t3chX
Srđan Rajčević
Thessaloniki

Član broj: 2509
Poruke: 101
*.salonica.access.acn.gr

Jabber: techx@elitesecurity.org


Profil

icon Re: Zashto ne postoji destruktor?23.08.2003. u 17:12 - pre 200 meseci
Bruce Eckel je napisao i da finalize() nije uvek uspesna metoda, pa prema tome ostaje ti da se uzdas u stari dobri GC (koji je fenomenalno odradjen u Javi).
Razlog za destruktor ??? Zasto uvoditi desktruktore kada se cak i C++ populacija trudi da ih sto manje upotrebljava uvodjenjem externih garbage collectora...


If you want to get anywhere in your life, don't break the rules - make them !
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..g-c5300-3.dialup.nethere.net



+6 Profil

icon Re: Zashto ne postoji destruktor?23.08.2003. u 22:55 - pre 200 meseci
Destruktori u GC jezicima nemaju baš mnogo smisla. Kad će da se pozove taj destruktor?

Citat:
Zasto uvoditi desktruktore kada se cak i C++ populacija trudi da ih sto manje upotrebljava uvodjenjem externih garbage collectora...


Ovo te je neko slagao. Većina mehanizama za automatsko upravljanje memorijom u C++u se upravo oslanja na destruktore.
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.verat.net

Sajt: localhost


+4 Profil

icon Re: Zashto ne postoji destruktor?24.08.2003. u 02:35 - pre 199 meseci
Citat:
karas:
Bruce Eckel savetuje da sve zavrshne radnje nekog objekta izvedem u finally bloku. Zar nije bilo lakshe tvorcima Jave da omogucce destruktor ili barem da garantuju izvrshavanje finalize() odmah po bacanju objekta u smecce?


pa.. nije to baš tako jednostavno kako ti zamišljaš.. ti nikad objekte ne bacaš u smeće.. pre će biti da ti oni "ispadaju" po ulici dok trčiš, a posle prolazi đubrar i skuplja ih ;))

fazon je što GC nije garantovana i predefinisana operacija. ti nikad ne možeš da predvidiš kada će neki objekat biti oslobođen, pa čak ni kojim redom, itd..


ako te stvarno zanima teorija iza ove problematike, (i usput imaš šira interesovanja od same jave), evo dva vrlo korisna texta o GC i finalizerima u .NET (znam da nije striktno za ovaj forum -- ali to sam skoro čitao pa sam se setio...)

prvi je više o Delphi .NET implementaciji, a drugi je čisto m$, ali ipak prilično kvalitetan ;) -- principi rada svega ovoga (teorija, iza kulisa) zajednički su sa implementacijom javinih virtuelnih mašina, pa stoji moja preporuka svima!!


http://community.borland.com/article/0,1410,29365,00.html

http://msdn.microsoft.com/msdnmag/issues/1100/GCI/default.aspx
http://msdn.microsoft.com/msdnmag/issues/1200/GCI2/GCI2.asp (drugi deo)

 
Odgovor na temu

t3chX
Srđan Rajčević
Thessaloniki

Član broj: 2509
Poruke: 101
*.otenet.gr

Jabber: techx@elitesecurity.org


Profil

icon Re: Zashto ne postoji destruktor?24.08.2003. u 10:42 - pre 199 meseci
Da istina ... ali da li ti mehanizmi nastoje da olaksaju programeru u onoj meri u kojoj on ne bi trebao explicitno da navodi ~Klasa() ?


If you want to get anywhere in your life, don't break the rules - make them !
 
Odgovor na temu

caboom
Igor Bogicevic
bgd

Član broj: 255
Poruke: 1503
*.verat.net

ICQ: 60630914


+1 Profil

icon Re: Zashto ne postoji destruktor?24.08.2003. u 11:03 - pre 199 meseci
glede gc-a, mali offtopic:
http://www.kraml.at/stupid/java2k.html
have fun :)
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..g-c5300-4.dialup.nethere.net



+6 Profil

icon Re: Zashto ne postoji destruktor?24.08.2003. u 17:51 - pre 199 meseci
Citat:
t3chX:
Da istina ... ali da li ti mehanizmi nastoje da olaksaju programeru u onoj meri u kojoj on ne bi trebao explicitno da navodi ~Klasa() ?


Mislim da je generalna rasprava na temu automatskog upravljanja memorijom (iliti "garbage collection") primerenija forumu Art of Programming i ako si zainteresovan, otvori novu temu tamo pa ćemo da "ćaskamo" o tome.

Uglavnom što se Jave tiče, ostaje činjenica da njen gc ne omogućava determinističku finalizaciju objekata i zato destruktori u Javi nemaju smisla. Recimo, autori C#-a su uveli funkciju koja ima sintaksu destruktora, ali je u stvari finalizator baš kao u Javi. To je po meni loše, jer navodi nekog sa C++ iskustvom da misli da su u pitanju pravi destruktori, što jednostavno nije tačno. Mislim da je rešenje sa Javom bolje, jer ne uvodi takvu zabunu.
 
Odgovor na temu

karas

Član broj: 5574
Poruke: 482
*.114.EUnet.yu



+1 Profil

icon Re: Zashto ne postoji destruktor?24.08.2003. u 17:54 - pre 199 meseci

Ako u konstruktoru otvorim fajlove zar ne bi bilo lepo da ih zatvaram u finalize() a ne da to obavljam iz finally bloka ili chekam na GC da pozove finalize()?

Sveti Avgustin: "Dobar hrišćanin treba da se kloni matematičara i svih onih koji daju lažna proročanstva. Postoji opasnost da su matematičari već sklopili pakt sa Đavolom, da pomrače čovekov um i da ga okuju okovima pakla."
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..g-c5300-2.dialup.nethere.net



+6 Profil

icon Re: Zashto ne postoji destruktor?24.08.2003. u 18:41 - pre 199 meseci
Naravno da bi bilo lepo. Ta tehnika se zove Resource Acquisition Is Initialisation ili skraćeno RAII i možeš o njoj više da pogledaš npr ovde:

http://www.spin.ie/jon/raii/

Citat:

"RAII cannot generally be used with languages that clean up objects using an unpredictable garbage collection, such as Java."


 
Odgovor na temu

[es] :: Java :: Zashto ne postoji destruktor?

[ Pregleda: 3492 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.