W jaki sposób jest niezależna od platformy Java, jeśli do działania wymagana jest maszyna JVM?

79

Dopiero co zacząłem uczyć się języka Java i jestem zdezorientowany tematem niezależności platformy.

Czy „niezależność” nie oznacza, że ​​kod Java powinien działać na dowolnej maszynie i nie wymaga instalowania specjalnego oprogramowania? Jednak JVM musi być obecny w maszynie.

Na przykład, musimy mieć kompilator Turbo C, aby skompilować kod źródłowy C / C ++, a następnie go wykonać. Maszyna musi mieć kompilator C.

Czy ktoś mógłby się spodobać, co oznacza określenie Java jako „niezależna od platformy”?

Spokój
źródło
4
@aaa: Ostatnio sprawdzałem, było dostępne do bezpłatnego pobrania na stronie firmy Borland.
dan04
1
Tak, wymienione jako Antique Software ... ( edn.embarcadero.com/article/20841 ).
Matthew Flaschen
2
Turbo C (ani żaden inny „natywny” kompilator) nie jest potrzebny do wykonania skompilowanego programu. kompilator generuje .exeplik. co najwyżej wymaga biblioteki wykonawczej (w .dllpliku), a nie całego kompilatora
Javier

Odpowiedzi:

111

Zazwyczaj skompilowany kod jest dokładnym zestawem instrukcji, których CPU wymaga do „wykonania” programu. W Javie skompilowany kod to dokładny zestaw instrukcji dla „wirtualnego procesora”, który musi działać tak samo na każdej fizycznej maszynie.

Dlatego w pewnym sensie projektanci języka Java zdecydowali, że język i skompilowany kod będą niezależne od platformy, ale ponieważ kod ostatecznie musi działać na platformie fizycznej, zdecydowali się umieścić cały kod zależny od platformy w JVM.

Ten wymóg dotyczący maszyny JVM różni się od przykładu z Turbo C. Dzięki Turbo C kompilator będzie tworzył kod zależny od platformy i nie ma potrzeby tworzenia podobnej maszyny JVM, ponieważ skompilowany program Turbo C może być wykonywany bezpośrednio przez procesor.

W przypadku języka Java procesor wykonuje maszynę JVM, która jest zależna od platformy. Ta działająca maszyna JVM wykonuje następnie kod bajtowy Java, który jest niezależny od platformy, pod warunkiem, że dostępna jest maszyna JVM do wykonania na niej. Można powiedzieć, że pisząc kod w Javie, nie programuje się kodu do wykonania na maszynie fizycznej, pisze się kod, który ma być wykonany na wirtualnej maszynie języka Java.

Jedynym sposobem, w jaki cały ten kod bajtowy Java działa na wszystkich maszynach wirtualnych Javy, jest napisanie dość surowego standardu działania maszyn wirtualnych Java. Oznacza to, że niezależnie od używanej platformy fizycznej część, w której kod bajtowy Java łączy się z maszyną JVM, będzie działać tylko w jedną stronę. Ponieważ wszystkie maszyny JVM działają dokładnie tak samo, ten sam kod działa wszędzie dokładnie tak samo bez ponownej kompilacji. Jeśli nie możesz przejść testów, aby upewnić się, że jest taki sam, nie możesz nazywać swojej maszyny wirtualnej „maszyną wirtualną Java”.

Oczywiście istnieją sposoby na złamanie przenośności programu Java. Możesz napisać program, który szuka plików tylko w jednym systemie operacyjnym (na przykład cmd.exe). Możesz użyć JNI, który efektywnie pozwala na umieszczenie skompilowanego kodu C lub C ++ w klasie. Możesz użyć konwencji, które działają tylko dla określonego systemu operacyjnego (np. Zakładając, że „:” oddziela katalogi). Ale masz gwarancję, że nigdy nie będziesz musiał ponownie kompilować swojego programu na inną maszynę, chyba że robisz coś naprawdę wyjątkowego (jak JNI).

Edwin Buck
źródło
1
„Ponieważ wszystkie maszyny JVM działają dokładnie tak samo, ten sam kod działa wszędzie tak samo bez ponownej kompilacji”. Co to zdanie oznacza? Za każdym razem, gdy uruchamiasz ten sam program w różnych systemach z zainstalowaną maszyną JVM, zawsze robimy to „javac filename.java”. (Weźmy na przykład jakikolwiek prosty program). Jeśli nie jest wymagana ponowna kompilacja programu, to dlaczego mówi się, że „moglibyśmy uruchomić ten sam kod w dowolnym miejscu bez ponownej kompilacji?”. Proszę wytłumacz.
Karan Thakkar
3
Musisz skompilować kod źródłowy Java, stąd „nazwa pliku javac.java”. Jednak wystarczy to tylko raz i nie na każdej maszynie, na której jest używany (różni się to od C i C ++). Jeśli zmienisz procesory, systemy 32/64-bitowe, kolejność bajtów itp., Kod nadal działa. Dzieje się tak, ponieważ wyjściowy plik „nazwa_pliku.class” zawiera kod bajtowy, który jest instrukcjami dla maszyny JVM. Ponieważ wszystkie maszyny JVM są funkcjonalnie identyczne, po skompilowaniu kodu można następnie uruchomić ten kod bajtowy na dowolnej wirtualnej maszynie języka Java bez posiadania kodu źródłowego. Spróbuj, to działa. Ponadto niektóre komentarze mylą kompilację z rekompilacją.
Edwin Buck
@KaranThakkar - Myślę, że rozszerzenie tego, co miał na myśli Edwin, mogłoby polegać na łatwym użyciu tych samych plików .jar w twoich projektach na dowolnej platformie bez ich kompilowania.
vanguard69
54
            Technical Article on How java is platform indepedent?

Zanim przejdziesz do szczegółów, najpierw musisz zrozumieć, co oznacza platforma? Platforma składa się ze sprzętu komputerowego (głównie architektura mikroprocesora) i systemu operacyjnego. Platforma = sprzęt + system operacyjny

Wszystko, co jest niezależne od platformy, może działać na dowolnym systemie operacyjnym i sprzęcie.

Java jest niezależna od platformy, więc java może działać na każdym systemie operacyjnym i na każdym sprzęcie. Teraz pytanie brzmi, jak to jest niezależne od platformy?

Dzieje się tak z powodu magii kodu bajtowego, który jest niezależny od systemu operacyjnego. Kiedy kompilator java kompiluje dowolny kod, generuje kod bajtowy, a nie natywny kod maszyny (w przeciwieństwie do kompilatora C). Teraz ten kod bajtowy wymaga interpretera do wykonania na komputerze. Ten interpreter to JVM. Więc JVM odczytuje ten kod bajtowy (czyli niezależny od komputera) i wykonuje go. Różne maszyny JVM są zaprojektowane dla różnych systemów operacyjnych, a kod bajtowy może działać w różnych systemach operacyjnych.

W przypadku języka C lub C ++ (język, który nie jest niezależny od platformy) kompilator generuje plik .exe, który jest zależny od systemu operacyjnego, więc po uruchomieniu tego pliku .exe w innym systemie operacyjnym nie będzie on działać, ponieważ ten plik jest zależny od systemu operacyjnego, więc nie jest kompatybilny z inny system operacyjny.

Wreszcie pośredni kod Byte niezależny od systemu operacyjnego sprawia, że ​​platforma Java jest niezależna.

Jatin Khurana
źródło
5
To głupia odpowiedź. To, co czyni platformę java niezależną, to fakt, że java jest zależna od maszyny wirtualnej. Nie obchodzi go, na jakim systemie operacyjnym działa, o ile ta maszyna wirtualna spełnia wywołania operacji systemu operacyjnego. Sama maszyna wirtualna nie jest niezależna od platformy. Porównanie, które podałeś z językiem C / C ++ było fałszywe, po prostu skompiluj kod źródłowy na tej właśnie platformie i będzie działać, po co przenosić ten zestaw instrukcji na inną platformę i głupio oczekiwać, że będzie działać? Czy możesz przenieść kod źródłowy Java do ARM i oczekiwać, że będzie działał na maszynie wirtualnej skompilowanej dla mojego procesora niestandardowego?
Abhinav Gauniyal
Projekt maszyny JVM jest taki sam. Oracle zwariuje na punkcie projektowania różnych maszyn JVM dla każdej maszyny. Jedyną różnicą jest kod bajtowy programu, który chcesz uruchomić na jakimś komputerze. Każdy program generuje inny typ kodu bajtowego. Plik kodu bajtowego ma format szesnastkowy, aby maszyna JVM i procesor mógł zrozumieć i wykonać zestaw instrukcji.
Karan Thakkar
26

Oznacza to, że programista Java nie musi (teoretycznie) znać szczegółów maszyny lub systemu operacyjnego. Te szczegóły istnieją i obsługują je JVM i biblioteki klas. Ponadto, w przeciwieństwie do języka C, pliki binarne Java (kod bajtowy) można często przenosić do zupełnie innych systemów bez modyfikowania lub ponownej kompilacji.

Matthew Flaschen
źródło
10
„... Pliki binarne Java (kod bajtowy) można często przenosić do zupełnie innych architektur bez ponownej kompilacji.”. Właściwie zawsze mogą. Rekompilacja jest konieczna tylko w przypadku przenoszenia kodu skompilowanego dla nowszej maszyny JVM do starszej.
Stephen C
@Stephen, zmieniłem to na „systemy”. Istnieje wiele czynników, które mogą utrudniać przenoszenie, w tym używanie JNA lub JNI do łączenia się z bibliotekami, które są napisane tylko dla jednej architektury.
Matthew Flaschen
1
JNA lub JNI wydawałyby się być dla mnie jedynym czynnikiem, a te są dość rzadkie w prawdziwym świecie. Nawet wtedy kod bajtowy można zawsze przenieść bez ponownej kompilacji - po prostu może być konieczne ponowne skompilowanie bibliotek, których JNI spodziewa się tam. Jednak kod bajtowy jest nadal przenośny.
Kendall Helmstetter Gelner
uzgodniono ... ale w żadnym z tych przypadków rekompilacja "binariów Java (kod bajtowy)" nie zrobi najmniejszej różnicy !!
Stephen C
Mam jedno pytanie, czy zgodny kod bajtowy Javy współdziała z jądrem systemu operacyjnego? Jeśli tak, ten sam kod bajtowy nie może być zastosowany do różnych jąder, ponieważ funkcje jądra są różne, prawda? Albo JVM zawiera wszystkie funkcje jądra dla każdego innego jądra, co jest bardzo niewiarygodne ...
henryyao
9

Nie, jest odwrotnie. To dlatego, że używasz maszyny wirtualnej, program Java jest niezależny.

Maszyna wirtualna nie jest niezależna, musisz zainstalować taką, która jest specjalnie dostosowana do Twojego typu systemu. Maszyna wirtualna tworzy niezależną platformę na szczycie systemu operacyjnego.

Guffa
źródło
8

JVM to „symulowana maszyna”, którą można zainstalować w różnych systemach. W ten sposób ten sam kod Java może działać w różnych systemach, ponieważ opiera się na JVM, a nie na samym systemie operacyjnym.

Oznacza to, że pozwala to programiście komunikować się z systemem wirtualnym (JVM) i wykorzystywać jego funkcje zamiast określonych funkcji maszyny i systemu operacyjnego. Ponieważ Java opiera się tylko na JVM, jest niezależna od platformy (jeśli platforma ma zainstalowaną maszynę JVM).

Krótko mówiąc, Java nie jest niezależna od platformy jako taka, wymaga instalacji maszyny JVM dla wszystkich systemów, na których powinna działać. Jednak będzie działać we wszystkich systemach, w których jest zainstalowana maszyna JVM.

Lars Andren
źródło
4

Java jest niezależna od platformy, ponieważ ma JVM (wirtualną maszynę Java). Zilustrujmy to przykładem z życia wziętego. Załóżmy, że jesteś wolny dla członków swojej rodziny. Ale dlaczego?

Ponieważ znasz ich dobrze, a oni również Ciebie. Ale nie jesteś wolny dla członków mojej rodziny. Ponieważ ich nie znasz, a oni też nie znają ciebie. Ale jeśli jestem twoim przyjacielem i kiedy mogę przedstawić cię członkom mojej rodziny, będziesz mógł z nimi swobodnie rozmawiać.

Podobnie, jeśli jesteś kodem, a ja jestem JVM. Twoja rodzina to platforma Windows, a moja to platforma Linux. Jeśli byłeś językiem C lub innym językiem zależnym od platformy, znasz tylko członków swojej rodziny i odwrotnie. Dlatego tylko platforma, na której zostałeś napisany, zna ten kod i będzie go obsługiwać. Ale jeśli jesteś kodem JAVA i kiedy przyjdziesz do mojej rodziny, a mianowicie. platformę Linux i jeśli mnie tam znajdziesz, JVM, mogę przedstawić Ci moją rodzinę, platformę Linux i będziesz mógł z nią współpracować.

W przypadku języków zależnych od platformy nie ma żadnego przyjaciela, takiego jak JVM, który mógłby przedstawić się jakiejkolwiek rodzinie platform. W ten sposób Java jest niezależna od platformy. :)

Tazwar Utshas
źródło
3

JVM pobiera abstrakty z konkretnej platformy. Twój program opiera się tylko na JVM, a ponieważ JVM jest dostępny dla różnych platform, takich jak Windows i Linux, Twój program jest niezależny od platformy (ale zależy od JVM).

demon
źródło
3

W języku c / c ++ kod źródłowy (plik programu c) po kompilacji za pomocą kompilatora jest bezpośrednio konwertowany na natywny kod maszynowy (co jest zrozumiałe dla konkretnej maszyny, na której kompilujemy kod). Dlatego skompilowany kod c / c ++ nie może działać w innym systemie operacyjnym.

Ale w przypadku Javy: plik źródłowy java (.java) zostanie skompilowany za pomocą kompilatora JAVAC (obecnego w JDK), który dostarcza kod bajtowy (plik .class), który jest zrozumiały dla każdej maszyny JVM zainstalowanej w dowolnym systemie operacyjnym (system fizyczny) .

Tutaj musimy mieć różne JVM (zależne od platformy) dla różnych systemów operacyjnych, w których chcemy uruchomić kod, ale plik .class (kod skompilowany / kod pośredni) pozostaje taki sam, ponieważ jest zrozumiały dla każdej zainstalowanej maszyny JVM na dowolnym systemie operacyjnym.

W c / c ++: tylko kod źródłowy jest niezależny od komputera. W Javie: zarówno kod źródłowy, jak i skompilowany są niezależne od platformy.

To sprawia, że ​​platforma Java (maszyna) jest niezależna.

PRATHIKSHA JAIN
źródło
3

java nie jest niezależna od platformy, sama jest platformą opartą na tej platformie aplikacje java działają, ale sama platforma java jest zależna od platformy

user3647490
źródło
2

1:jvm(tj. maszyna wirtualna java) to zbiór programów, który zawiera wiele plików, które zapewniają różne funkcje obecne w folderze (tj. kolekcje programów w formacie średniego poziomu) o nazwie packages. jvmpomaga uniknąć przeciążenia w sytuacji, o/sgdy pomaga wykonywać tylko .classpliki lub aplikacje java tylko samodzielnie.Pomaga uczynić jego równość formatem średniego poziomu po uzgodnieniu przez kompilator java, a następnie dostarcza reprsentację kodu bajtowego (plik .class), który nie jest specyficzne dla o/si processor.
2: jvm tworzy kod bajtowy do .exepliku, aby procesor był zrozumiały i przedstawia alokację pamięci dla każdej funkcji po odebraniu kodu bajtowego frm.
3: jvm zwalnia również alokację pamięci z pamięci RAM po zakończeniu wykonywania przez sterowanie.

ranjan
źródło
2

JVM zależy od systemu operacyjnego. dla każdego systemu JVM inny.

„.class” jest taki sam dla wszystkich maszyn JVM. więc każda maszyna JVM rozumie dane pliku „.class”.

JVM zależne od systemu Windows przekazuje instrukcje zależne od systemu Windows do systemu Windows JVM zależne od systemu Linux przekazuje instrukcje zależne od systemu Linux linux.

tak jest w przypadku innych systemów operacyjnych. więc java działa w każdym systemie operacyjnym.

dlatego java jest niezależna od systemu operacyjnego.

upływ czasu
źródło
2

W prostych słowach:

Język programowania Java jest niezależny od platformy.

JVM zależy od platformy

Mohan
źródło
1

Java nie jest niezależna od platformy, ponieważ działa na JVM. To powiedziawszy, zyskujesz niezależność platformy poprzez programowanie na pojedynczej abstrakcyjnej maszynie, która ma konkretne realizacje na większości popularnych platform OS (i niektórych wbudowanych urządzeniach).

Pokrewnym pomysłem jest warstwa abstrakcji sprzętu obecna w wielu systemach operacyjnych, która umożliwia działanie tego samego systemu operacyjnego na innym sprzęcie.

W twoim pierwotnym pytaniu Turbo C jest analogiczne do programu javac, a JVM to OS / HAL.

John Percival Hackworth
źródło
1

Czy to nie niezależność oznacza, że ​​kod Java powinien działać na dowolnej maszynie i nie wymagałby instalowania żadnego specjalnego oprogramowania (w tym przypadku JVM musi być obecny na maszynie)?

Dzięki Javie można kompilować kod źródłowy w systemie Windows, a skompilowany kod ( a dokładnie kod bajtowy) może być wykonywany (interpretowany) na dowolnej platformie, na której działa maszyna JVM. Więc tak, potrzebujesz JVM, ale JVM może uruchomić dowolny skompilowany kod, skompilowany kod jest niezależny od platformy .

Innymi słowy, masz zarówno przenośność kodu źródłowego, jak i przenośność skompilowanego kodu.

Na przykład, musimy mieć kompilator Turbo C, aby skompilować kod źródłowy C / C ++, a następnie go wykonać. Maszyna musi mieć kompilator C.

Maszyna nie musi mieć kompilatora C, maszyna musi używać pliku binarnego specyficznego dla platformy. W C lub C ++ skompilowany kod jest specyficzny dla każdej architektury, jest niezależny od platformy .

Innymi słowy, z C / C ++ masz przenośność kodu źródłowego (z pewną dyscypliną), ale nie przenośność skompilowanego kodu: musisz przekompilować dla każdej architektury do plików binarnych specyficznych dla platformy.

Pascal Thivent
źródło
1

JVM będzie zależne od platformy.
Ale cokolwiek wygeneruje, będzie niezależne od platformy. [który nazwaliśmy kodem bajtowym lub po prostu możesz powiedzieć ... plik klasy]. dlatego Java jest nazywana niezależną od platformy.
możesz uruchomić ten sam plik klasy na komputerze Mac również w systemie Windows, ale będzie to wymagało środowiska JRE.

Nitz
źródło
0

kod bajtowy nie jest niezależny od plateform, ale jego JVM, która uniezależnia kod bajtowy. Kod bajtowy nie jest kodem dopasowania. Kody bajtowe to zwarte kody numeryczne, stałe i odniesienia (zwykle adresy numeryczne), które kodują wynik parsowania i analizy semantycznej takich rzeczy, jak typ, zakres i głębokość zagnieżdżenia obiektów programu. Dzięki temu zapewniają znacznie lepszą wydajność niż bezpośrednia interpretacja kodu źródłowego. kod bajtowy musi zostać zinterpretowany przed wykonaniem, co zawsze jest wykonywane przez interpreter JVM.

Skorpion
źródło
0

Na marginesie dyskusji na temat JVM i JIT Compilation. Jest to ta sama zasada, co w C # i CLR oraz do pewnego stopnia w Pythonie, a kiedy ktoś mówi, że kod działa "bezpośrednio na sprzęcie", to faktycznie jest to prawdą w tych instrukcjach, które są już skompilowane, będą mogli skorzystać z optymalizacji na komputerze / procesorze, na którym jest uruchamiany. Więc nawet jeśli początkowa kompilacja modułu jest raczej powolna, to następnym razem, gdy ten moduł zostanie uruchomiony, wykonywany kod będzie działał z natywną szybkością, a więc będzie działał bezpośrednio na sprzęcie.


źródło
0

Java jest niezależna od platformy w aspekcie programisty Java, ale nie dotyczy to użytkownika końcowego, który musi mieć maszynę JVM zależną od platformy, aby uruchomić kod Java. Zasadniczo podczas kompilacji kodu Java generowany jest kod bajtowy, który jest zwykle niezależny od platformy. Dlatego programista musi napisać jeden kod dla całej serii platform. Ale ta korzyść wiąże się z bólem głowy dla użytkownika końcowego, który musi zainstalować JVM, aby uruchomić skompilowany kod. Ta maszyna JVM jest inna dla każdej platformy. Zatem zależność pojawia się tylko dla użytkownika końcowego.

user1641361
źródło
0

Javac - kompilator konwertujący kod źródłowy na kod bajtowy. JVM - interpreter konwertujący kod bajtowy na kod języka maszynowego.

Jak wiemy, java jest językiem kompilującym ** r & ** interpreterowym . Po skompilowaniu kodu Java, znanego również jako kod źródłowy, jest on konwertowany na kod natywny znany jako KOD BYTE, który jest przenośny i można go łatwo wykonać we wszystkich systemach operacyjnych. Wygenerowany kod bajtowy jest zasadniczo reprezentowany w formacie szesnastkowym . Ten format jest taki sam na każdej platformie, czy jest to stacja robocza Solaris, Macintosh, Windows czy Linux. Po kompilacji interpreter odczytuje wygenerowany kod bajtowy i tłumaczy go zgodnie z maszyną hosta. . Kod bajtowy jest interpretowany przez wirtualną maszynę Java, która jest dostępna we wszystkich instalowanych przez nas systemach operacyjnych. więc aby przenieść programy Java na nową platformę, wystarczy przenieść interpreter i niektóre procedury biblioteczne.

Mam nadzieję, że to pomoże!!!


źródło
0

Kiedy kompilujemy dane źródłowe w C, generuje on natywny kod, który może być zrozumiany przez obecny system operacyjny. Kiedy przenosimy ten kod źródłowy do innego systemu operacyjnego, nie może być zrozumiany przez system operacyjny z powodu kodu natywnego, który oznacza, że ​​reprezentacja zmienia się z systemu operacyjnego na system operacyjny, więc C lub C ++ są zależne od platformy.

Teraz w przypadku javy po kompilacji otrzymujemy kod bajtowy zamiast kodu natywnego. Kiedy uruchomimy kod bajtowy, jest on konwertowany na kod natywny przy pomocy JVM, a następnie zostanie wykonany.

Tak więc Java jest niezależna od platformy, a C lub C ++ nie jest niezależna od platformy.

Monis Majeed
źródło
0

cóż, dobre pytanie, ale kiedy kod źródłowy jest zmieniany przez kompilator na pośredni natywny kod bajtowy, w którym konwertuje program na kod bajtowy, podając błędy po całym sprawdzeniu od razu (jeśli zostaną znalezione), a program potrzebuje interpretera, który sprawdzał program wiersz po wierszu i bezpośrednio zmieniał go w kod maszynowy lub kod obiektowy, a każdy system operacyjny domyślnie nie może mieć interpretera java z pewnych względów bezpieczeństwa, więc musisz mieć jvm za wszelką cenę, aby uruchomić go na tej innej platformie systemu operacyjnego niezależność, jak powiedziałeś tutaj, oznacza, że ​​program można uruchomić w dowolnym systemie operacyjnym, takim jak unix, mac, linux, Windows itp., ale nie oznacza to, że każdy system operacyjny będzie mógł uruchamiać kody bez jvm, który mówi specyfikację, implementację, i przykład,jeśli zrobię postęp, zmieniając konfigurację twojego komputera tak, abyś mógł mieć program ładujący klasy, który może otworzyć nawet kod bajtowy, możesz również wykonać kod bajtowy java, aplety itp. -by nimish :) powodzenia

Nimish Maskara
źródło
0

{App1 (kod Java) ------> App1byteCode} ........ {(JVM + MacOS) pomoc w pracy z aplikacjami App1, App2, App3}

{App2 (Java Code) -----> App2byteCode} ........ {(JVM + LinuxOS) pomoc w pracy z aplikacjami App1, App2, App3}

{App3 (Java Code) -----> App3byteCode} ........ {(JVM + WindowsOS) pomoc w pracy z aplikacjami App1, App2, App3}

Jak to się dzieje?

Odp: JVM może odczytywać ByteCodei odpowiadać zgodnie z podstawowym systemem operacyjnym, ponieważ JVM jest zsynchronizowany z systemem operacyjnym.

Dlatego potrzebujemy JVM z synchronizacją z platformą.

Ale najważniejsze jest to, że programista nie musi znać konkretnej wiedzy o Platformie i programować swojej aplikacji z myślą o jednej konkretnej platformie.

Ta elastyczność pisania programów w Javie --- kompilowanie ByteCodei uruchamianie na dowolnej maszynie (tak, aby wykonać JVM zależne od platformy) sprawia, że ​​platforma Java jest niezależna.

RishiKesh Pathak
źródło
-1

kiedy kompilujemy plik java, generowany jest plik .class tego programu, w którym plik .class zawiera kod bajtowy. Ten kod bajtowy jest niezależny od platformy, kod bajtowy można uruchomić w dowolnym systemie operacyjnym korzystającym z maszyny wirtualnej Java. niezależność platformy nie tylko w kwestii systemu operacyjnego, ale także sprzętu. Kiedy uruchamiasz aplikację java na 16-bitowej maszynie, którą stworzyłeś na 32-bitowej, nie musisz się martwić o konwersję typów danych zgodnie z systemem docelowym. Możesz uruchomić swoją aplikację na dowolnej architekturze i uzyskasz ten sam wynik na każdej z nich.

Nikita Rawool
źródło
-3

Edycja: niezupełnie. Zobacz komentarze poniżej.

Java nie działa bezpośrednio na niczym. Musi zostać przekonwertowany na kod bajtowy przez maszynę JVM.

Ponieważ maszyny JVM istnieją dla wszystkich głównych platform, sprawia to, że Java jest niezależna od platformy POPRZEZ JVM.

Amy B.
źródło
1
JVM interpretuje lub kodu bajtowego JIT. Nie kompiluje się do tego.
Matthew Flaschen
Tak. „dla JVM” jest bardziej dokładne.
smary wielogenowe
1
jopdesign.com ~ może spróbować ponownie. ci faceci mówią, że może działać bezpośrednio na sprzęcie.
jcolebrand