Kategorie:
25

Da Vinci Machine, czyli nie tylko Java na Java Virtual Machine

Firma Sun Microsystems opracowuje technologię, która ułatwi uruchamianie na wirtualnej maszynie Javy programów napisanych w językach innych, niż Java. Projekt nosi nazwę Da Vinci Machine i jest przez Suna określany mianem „wielojęzycznego renesansu dla architektury Java Virtual Machine”.

Charles Nutter, główny twórca JRuby (wersji Ruby na JVM) wskazuje, że Java jako język o silnej typizacji różni się od języków skryptowych takich, jak Ruby. Dzięki temu Java niesie ze sobą więcej informacji o tym, w jaki sposób kod powinien być wykonany. Dlatego przed twórcami Da Vinci Machine stoi zadanie znalezienia najlepszej drogi do prawidłowego wykonywania kodu dla innych języków.

Sun planuje umieścić część funkcjonalności Da Vinci Machine w najnowszym Java SE Development Kit 7. Nieznane są jednak żadne szczegóły i data publikacji tego JDK. Ważne jest to, że opinie deweloperów na temat pomysłu Suna są przychylne. Podkreślają oni, że dzięki temu praca programistów będzie wygodniejsza i łatwiejsza.

Więcej informacji: http://webhosting.pl/kategorie/programow...al_machine

«
»

Znalazłeś literówkę? Zgłoś ją używając formularza!


Jeśli uważasz, że ten nius jest nieobiektywny, przedstawia nieprawdziwe wydarzenie, jest spamem lub nie spełnia standardów serwisu, napisz raport.

Niusy na podobny temat:

Komentarze (RSS)

Komentarze są prywatnymi opiniami dodających je osób. Prosimy o zachowanie kultury wypowiedzi. Komentarze obraźliwe oraz obniżające poziom serwisu będą usuwane. Więcej w regulaminie komentowania.

14 komentarzy

zwiń wątek Livio  6 lutego 2008 o godz. 22:08 #
Gravatar

Ale natywnie byłoby chyba szybciej…

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek Michal  6 lutego 2008 o godz. 23:21 #
Gravatar

Pewnie tak, ale dzieki takiej maszynie najprawdopodobniej bedziesz mogl wykorzystac klasy javy.

 
zwiń wątek mario  7 lutego 2008 o godz. 0:07 #
Gravatar

Nie było by szybciej, bo nie było by natywne (natywny jest tylko interpreter a nie sam program) – takie języki jak Ruby, czy Python są interpretowane. Program napisany w jakimś języku po skompilowaniu do byte-codeu Javy jest drugi raz kompilowany przy uruchomieniu do kodu natywnego. Zresztą programy napisane w Javie są niewiele wolniejsze od C/C++, kosztem jaki narzuca VM Javy jest pamięć – program uruchamiany pod VM Javy zużywa dużo więcej pamięci niż odpowiednik w C/C++, ale za to jest dużo szybszy od interpretowanego.

zwiń wątek MDW  8 lutego 2008 o godz. 9:02 #
Gravatar

Java jest wolniejsza. To taki "zamulator", że używać się nie chce softu dla niej napisanego.

zwiń wątek mario  8 lutego 2008 o godz. 9:37 #
Gravatar

Widać nie przetłumaczy wielu osobom. Problem Javy jest taki, że zjada ona dużo RAMu i jak masz go mało to Twój program w Javie zacznie być swapowany i wydawać się będzie, że działa wolniej. Drugi problem to programiści Javy – używają bibliotek gotowców i molochów, które pożerają spore ilości pamięci. Java jako język jest bardzo szybka, tutaj jest przykładowy test:

:
http://shootout.alioth.debian.org/gp4/benchmark.p
:

Jak widać renderowanie mandelbrota w javie jest tylko o 0.1 raza wolniejsze od GCC C++ z maksymalnym poziomem optymalizacji i szybsze od GCC C/C++ z mniejszym poziomem optymalizacji. Python (język interpretowany) jest o 107 razy wolniejszy! Ale teraz poparzmy na zużycie pamięci, java 10,124 kB i python 2,412 kB - teraz rozumiesz? Java zużywa 4 razy więcej pamięci niż python ale jest 100 razy szybsza w renderowaniu fraktala mandelbrota.

:

Nie wiem kiedy ten mit o powolnej Javie minie, bo Java była kiedyś powolna, podobnie jak Linux był trudny w obsłudze i instalacji.

 
zwiń wątek mario  8 lutego 2008 o godz. 9:49 #
Gravatar

Właśnie tam popatrzyłem na źródła testów i okazało się, że ta najszybsze implementacje w C/C++ są specjalnie zoptymalizowane pod SSE:

: http://shootout.alioth.debian.org/gp4/benchmark.p
:

Kod nie jest niezależny od maszyny jak w przypadku Javy i wolniejszych implementacji C/C++, które w tym przypadku są nawet wolniejsze od Javy:

:

C++:
http://shootout.alioth.debian.org/gp4/benchmark.p
:

analogiczny kod w Javie:

:
http://shootout.alioth.debian.org/gp4/benchmark.p

 
zwiń wątek mario  8 lutego 2008 o godz. 10:02 #
Gravatar

Popatrzyłem na źródła tych programów w Javie i wolniejszego i szybszego C/C++. Okazuje się, że w tym przypadku w analogicznym kodzie Java jest akutat szybsza. Ta szybsza od Javy implementacja w C/C++ jest specjalnie optymalizowana pod SSE (używa specjalnych bibliotek do SSE), a tym samym traci się przenaszalność tego kodu na inne platformy sprzętowe. Dopiero ta wolniejsza implementacja od Javy to kod analogiczny do tego w Javie.

 
zwiń wątek mario  8 lutego 2008 o godz. 16:35 #
Gravatar

Dziwne komentarza z godz. 8:49 początkowo mi nie dodało, a więc napisałem drugi raz o 9:02, a potem pojawił się ten z 8:49, ale dopiero kilkadziesiąt/kilkanaście minut później.

 
zwiń wątek jellonek  4 marca 2008 o godz. 10:56 #
Gravatar

wklejenie 2 linkow powoduje to, ze komentarz musi byc zaakceptowany przez moderatora…

cholernie wkurza to czasami…

 
 
 
 
zwiń wątek Rsh  7 lutego 2008 o godz. 3:04 #
Gravatar

Zaletą z pewnością byłoby usunięcie potrzeby wymyślania na nowo optymalizatora dla poszczególnych języków. Ten Javy jest prawdpodobnie bardzo dobry. Odpowiednikiem Da Vinci Machine dla języków kompilowanych jest projekt LLVM.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek mario  7 lutego 2008 o godz. 9:13 #
Gravatar

Niezły ten LLVM, w online demo kompiluje algorytm rekurencyjny do liniowego i wstawia go inline do kodu, omijając wywołanie funkcji.

 
 
zwiń wątek Gf  7 lutego 2008 o godz. 9:26 #
Gravatar

gonią .NIET i dobrze. Podoba mi się ten pomysł. Jeśli jeszcze to kompilowanie do natywnego kodu będzie dobrze działać to będzie można wreszcie uzywać tego zupełnie przenośnie. Na maszynach j2me uzywac ruby i kompilowac wazne komponenty do natywnego kodu.

(Poniżej tego poziomu komentarze nie będą zagnieżdżane)
zwiń wątek mario  7 lutego 2008 o godz. 9:51 #
Gravatar

W j2me bardziej się opłaca użyć sprzętowej Javy w prockach ARM.

 
zwiń wątek sadi  9 lutego 2008 o godz. 0:11 #
Gravatar

Też myślę, że to bardzo dobry pomysł. Umożliwia dodatkowo łatwe stosowanie wielu różnych języków przy jednym projekcie co, jeśli jest używane z głową, może dawać ogromne korzyści.

 
 

Uwaga! Niektóre komentarze, m.in. te dodane przez niezalogowanych i nowych użytkowników, są ręcznie moderowane. Jeśli Twój komentarz nie ukaże się od razu, nie dodawaj go ponownie, tylko cierpliwie poczekaj na akceptację.

W komentarzach możesz używać prostych znaczników HTML. Przykłady:
  • Link: <a href="http://osnews.pl">OSnews: niusy IT</a>,
  • Wytłuszczenie: <strong>tekst pogrubiony</strong>,
  • Kursywa: <em>tekst pochylony</em>,
  • Przekreślenie: <strike>tekst przekreślony</strike>,
  • Kod: <code>printf("blok kodu");</code>,
  • Cytat: <blockquote>cytat</blockquote>
Uwaga: jeśli dodasz nieznany znacznik, będzie on niewidoczny, gdyż system filtruje takie znaczniki.

Wszystkie autorskie niusy w serwisie publikowane są na licencji Creative Commons Uznanie autorstwa 2.5 Polska.

Twoja sugestia