Java native compiler

Опубліковано: 2009-03-03   01:23:27

JavaБезліч змін в житті разом з радістю принесли і деякі тимчасові клопоти. Ну ніяк не можу увійти в звичний графік та встигати займатись всим тим, чим займався до переїзду та одруження. Основна причина цього - небажання шукати для всього цього час :) Ну до деяких справ я повертаюсь. Ну що ж. Спробую потрошку повертатись і до ведення блога.

Ну а тепер до справи. Всі звикли до того, що Java - інтерпретована мова програмування, що потребує для виконання попередньо встановленої віртуальної машини. Якщо Ви до цього часу не стикались з Java і нічого не знали, то тепер будете знати. Скільки я колись мав проблем, завдяки любові до цієї мови: от приходжу до університету здавати чесно зроблені лаболаторні роботи, а тут тобі сюрприз - невдається запустити, бо віртуальної машини немає в адиторії.

І ось зовсім нещодавно шукаючи спосіб зібрати *.exe файл з *.cpp коду під Linux наштовхнувся на чудову річ, якої мені колись так не вистачало. Це JavaNativeCompiler - програма, що дозволяє створювати бінарні виконувані файли, компілюючи програмний код написаний мовою java. Ось так розвіявся міф, котрий для мене декілька років був реальністю

Вся необхідна інформація присутня на сайті проекту, але трошки розповім я розповім. Почну з того, що це стороння розробка, на яку не впливають ні Sun, ні IBM. Цей проект один з декількох проектів mtSystems. По суті проект безкоштовний для використання у разі компіляції для Linux, а ось за ліцензію під windows доведеться заплатити майже 40 у.о. Хоча можна виконувати компіляцію і безкоштовною версією, однак на початку виконання резльтуючої програми буде з`являтись сповіщення про те, як було скопільовано програму. Хоч і не зовсім безкоштовно, але досить ліберально.

Програма сама по собі невелика (близько 20 МГб у вигладі архіву та близько 30 у розпакованому стані) і як мені стало зрозуміло зі скріншотів написана на Java та зкомпільована у бінарний файл сама собою. :) Як така маленька програма справляється з таким завданням? А за допомогою компілятора gcc (ще архіви по 90 МГб для Windows та Linux, кожен з яких розпаковуэться до 350 МГб). Якщо додати який небуть текстовий редактор та інтерфейс для роботи з компілятором gcc (чи то просто консоль як я це роблю в Linux), отримаємо цілий комбайн, здатний компілювати солідний список мов програмування. Так що запасаємось терпінням та починаємо завантажувати :)

Що ще хочеться сказати про програму? Якщо Ви переглянули скріншоти, то могли помітити, що інтерфейс інтуітивно зрозумілий, хоча є й додаткові опції. Тільки мені з ними нормально погратись часу не було, а перші спроби вилились в невдалу компіляцію. При першій спробі скомпілювати програму я був збентежений часом компіляції - згадуються часи i386, коли компіляція величенької програми займала декілька хвилин. А тут навіть невеличка програма змушує на довго замислитись машину.

Друга неприємна деталь - все працює на скільки я розумію завдяки декількох бібліотек java, що були зібрані не як jar, а як dll і so. Де починаються функції, що не увішли до складу бібліотек, я не перевіряв. Знаю, що для програм які користуються пакетом java.awt все необхідне є. Думає, що те що не увійшло можна віднести до Java Enterprise Edition, тобто не для користувацьких програм. Значить воно і не дуже тут потрібне.

Ну ось здається і все, що хотілось би розповісти. Хоча мені вже декілька днів не дає спокою питання: "Як же воно таки працює?".

Коментарі: 4
 

Коментарі:

podarok2009-03-03 13:43:14 :

Gnu gcj compiler

Робить те ж саме

 
GrAndSE2009-03-05 23:45:56 :

Скажу відверто, що хоча усім "пакетом компіляторів" gcc, до складу якого і входить gcj (якщо мене пам'ять не зраджує остаточно), я і користувався, але лишень для компіляції c/c++ коду. Чомусь мені більше весь час подобався оригінальний санівський компілятор.

Якщо мене пам'ять не gcj токож з Екліпсом йде, але і Екліпс декілька років тому після недовгого використання я змінив на NetBeans (можливо дарма - щось мені останні версії не дуже до смаку, чи то я зав'яз в php та відстаю від життя).

А взагалі то дуже дякую, за розширення світогляду і доцільне уточнення.

 
Afedaxo2009-06-09 07:05:54 :

Native-компіляція годиться хіба що для систем без JVM, у нормальних умовах запихання інтерпретатора і garbage collector'а в екзешник вважаю невиправданим.

 
GrAndSE2009-06-09 07:15:37 :

Зазвичай компіляція у native і не потрібна. Однак іноді треба щоб швиденько показати на системі де jvm може і не бути.

Якщо не секрет, яку мову ви використовуєте? Цікавлюсь тому що мало людей звертають увагу на дописи, що стосуються java

 

Додати коментар

user

email

url

text

Повідомляти про новікоментарі