Java kompilowana do kodu maszynowego...

0

Zaczynam naukę Javy i mam pytania odnosnie kompilowania do kodu maszynowego.

  1. Czy najnowsze wersje (aktualnie 6) mozna kompilowac do kodu maszynowego, jesli nie, to które można?

  2. Czym kompilować Javę do kodu maszynowego?

  3. Czy Java skompilowana do kodu maszynowego jest szybsza niż zwykła?

  4. Czy są jakieś mankamenty kompilowania do kodu maszynowego?

  5. a tak przy okazji, czy kod Javy skompilowany do kodu posredniego da się przerobić na zwykły kod, z którego ktoś mógłby skorzystać - jesli tak, to jak się przed tym bronić?

0

od dziwnych kwesti zaczynasz naukę javy :)

0

Trzeba mysleć przyszłościowo. Więc kto odpowie na moje pytania?

0

1-4: Java z zalozenia jest przenaszalna, wiec wszelkie przerabianie do kodu maszynowego to zwykla nakladka zawierajaca zazwyczaj kod posredni i jvm. Nakladki tylko third-party, o ile wiem.
5. Kod posredni mozna zdekompilowac, reszta odpowiedzi powyzej :)

0
  1. Czy przy po dekompilacji można odzyskać nazwy zmiennych?
  2. Czy jak użyje ten nakładki, to też można to zdekompilować? Czy jak użyje tej nakładki to apliakcja dlaej działą na wszystkich systemach?
0
  1. O ile pamietam to tak, ale tak naprawde to nie ma znaczenia, czy nazwy zmiennych sa czy nie.
  2. Czy zdekompilowac to nie wiem i nie, nie dziala na wszystkich systemach bo jak niby?
0
  1. Czemu nie ma znaczenia... Przecież jak będą pozmieniane nazwy to wtedy będzie trudniej zrozumieć kod...
  2. Sa jakieś zaciemniacze, aby kod trochę kokomplikować?
  3. Jak tu pisać w Javie, jak programy stają się Open Source :(
0

Są zaciemniacze kodu (np. w Wireless Toolkit jest to po prostu jedna z opcji budowania projektu) ale jeśli Twoje programy są tak genialne, że obawiasz się dekompilacji to najlepiej ich w ogóle nie udostępniać.

Co do kodu maszynowego to odpowiedzią na większość Twoich pytań jest hasło HotSpot, ewentualnie kompilacja just-in-time.

0

A te zaciemniacze są na tyle dobre, żeby nie można się było później połapać w zdekompilowanym kodzie? A kompilacja just-in-time jest standardowo uzywana przy wszystkich programach w Javie?

0

Nie ma znaczenia, bo co Ci szkodzi pozamieniac hurtem nazwy na cos normalnego? Np. widzisz nazwe f3jk5h6kj3h67kj76 i zamieniasz wszystkie wystapienia zwyklym edytorem na zmienna1. Ktos bedzie sprytniejszy to sobie napisze maly programik do tego i po sprawie.

0

Słyszałem, że zaciemniacze są kiepskie bo tylko powodują ciemniejsze wyświetlanie zdekompilowanego kodu (brightness -90) więc jak ktoś odpowiednio podkręci monitor to i tak wszystko zobaczy.

A JIT pewnie można wyłączyć np. kompilując JVM od nowa z pominięciem JIT.

:)

0

W bardziej skomplikowanym kodzie trudno się będzie połapać, jesli zmienne będą miały nazwy zmienna1 itd. to co byście polecali, żeby skutecznie utrudnić wgapianie się w mój kod?
A GCJ jest w zaawansowanych stadium rozwoju, w ogóle co o nim wiecie?

0

Co do tych zmiennych, to newiele zmienia. Dla mnie nie ma znaczenia czy widze zmienne: zmienna1, zmienna2, bo czesto prawdziwe nazwy i tak sa takie, ze niewiele mi to mowi... Poza tym chodzi o instrukcje, nie o nazwy zmiennych.

0

Co do gcj, to z tym "zaawansowanym stadiem rozwoju bym nie przesadzał". Próbowałem tego jakoś niedawno, to się czasem segfaultował na poprawnych klasach javy. A jeśli chodzi o wydajność tego skompilowanego kodu, to nie ma szans dogonić JVM Suna - kod optymalizowany w runtime będzie zawsze szybszy, choć wolniej się uruchamia :) Więc do aplikacji klienckich, gdzie liczy się szybkość startu, to i się nadaje, ale na serwer zdecydowanie odradzam.

0

A jak skompiluje program w GCJ to nadal wymaga Javy w systemie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1