Автор Гілка: Real-Time Java  (Прочитано 5015 раз)

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3825
  • Карма: +11/-0
  • Програміст
Real-Time Java
« : 2006-05-11 12:30:01 »
Стаття про нововедення в Java RTS 1.0. Тепер можна забороняти виконання збирання сміття, створювати об'єкти в пам'яті яка не контролюється збирачем сміття (як в Сі), мати прямий доступ до пам'яті (вже є в J2ME), запрограмовувати реакцію на події а також створювати потоки з жорсткими пріорітетами (без ефекту інверсії). Нажаль, в якості основи RTS 1.0 використано JDK 1.4.1 а не J2ME, так що для того, щоб написати драйвер на Java RTS, потрібна машинка з 512Mb пам'яті. Реалізація Java RTS має сенс тільки для відповідних операційних систем, таких як QNX чи RealTime Linux. Новинка вже використовується американськими військовими.

http://www.onjava.com/pub/a/onjava/2006/05/10/real-time-java-introduction.html
[Fedora Linux]

Відсутній Tikhon

  • Кореспондент
  • ***
  • дописів: 135
  • Карма: +0/-0
  • програміст
Re: Real-Time Java
« Відповідей #1 : 2006-05-11 12:34:38 »
Тепер можна забороняти виконання збирання сміття, створювати об'єкти в пам'яті яка не контролюється збирачем сміття (як в Сі), мати прямий доступ до пам'яті (вже є в J2ME)

цікаво, а як звільняти пам'ять, коли прибиральник сміття відключений?
« Змінено: 2006-05-11 12:36:00 від tikhon »
З повагою....

Відсутній Cthulhu

  • Кореспондент
  • ***
  • дописів: 183
  • Карма: +0/-0
Re: Real-Time Java
« Відповідей #2 : 2006-05-11 13:23:17 »
Оригінально, ніколи не чув. Але якщо мені знадобиться ручне керування пам'яттю я писатиму на C.

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3825
  • Карма: +11/-0
  • Програміст
Re: Real-Time Java
« Відповідей #3 : 2006-05-11 14:42:26 »
цікаво, а як звільняти пам'ять, коли прибиральник сміття відключений?
Вона звільниться після завершення критичного участку.
[Fedora Linux]

zzandy

  • Гість
Re: Real-Time Java
« Відповідей #4 : 2006-05-11 15:53:14 »
Це ніби повернення до першоджерел - С++ 4ever.

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3825
  • Карма: +11/-0
  • Програміст
Re: Real-Time Java
« Відповідей #5 : 2006-05-11 20:28:56 »
Це ніби повернення до першоджерел - С++ 4ever.
Щось типу того. Але Сі++ скоріше must die ні 4ever. Java значно краща заміна для Cі++ (хоча вона далека від ідеалу). Там де Ява не справляється, можна використовувати ті ж Сі/Сі++, з усіма наслідками.

Пропоную замість написання флейму на n сторінок написати якусь програму на обох мовах програмування й порівняти результати (швидкість, розширюваність, гнучкість, переносимість, зрозумілість, etc.). Вибір теми програми за вами.
« Змінено: 2006-05-11 20:32:40 від lvm »
[Fedora Linux]

zzandy

  • Гість
Re: Real-Time Java
« Відповідей #6 : 2006-05-11 21:08:41 »
Я не збирався флеймити, згоден на вашу пропозицію, тільки не можу придумати тему програми  - я вже давно програмую тільки на пхп, робота така. Можна було-б пофлеймити хібащо про швидкодію.
« Змінено: 2006-05-11 21:09:56 від zzandy »

Відсутній Tikhon

  • Кореспондент
  • ***
  • дописів: 135
  • Карма: +0/-0
  • програміст
Re: Real-Time Java
« Відповідей #7 : 2006-05-11 22:52:12 »
швидкість, розширюваність, гнучкість, переносимість, зрозумілість, etc.).

за великим рахунком, усі вищеназвани пункти, окрім переносимості, не залежать від мови програмування,
хіба що швидкість в деяких сверах буває критичною, а так все залежить від програмістів, та парадігм, які вони
застосовують
З повагою....

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3825
  • Карма: +11/-0
  • Програміст
Re: Real-Time Java
« Відповідей #8 : 2006-05-12 13:49:26 »
Я не збирався флеймити, згоден на вашу пропозицію, тільки не можу придумати тему програми  - я вже давно програмую тільки на пхп, робота така. Можна було-б пофлеймити хібащо про швидкодію.

Можна й про швикодію:

hw.java
//bin/false; NAME="`basename $0 .java`"; EX_NAME="/tmp/$NAME-$UID-$RANDOM" ; gcj "$0" --main="$NAME" -o "$EX_NAME" && "$EX_NAME" "$@"; EX_CODE=$?; rm -f "$EX_NAME" ; exit $EX_CODE

public class hw
{
  public static void main(String[] args)
  {
    HelloWorld.hello();
  }
}

class HelloWorld
{
  public static void hello()
  {
    System.out.println("Hello, world!");
  }
}

$ chmod a+x ./hw.java
$ time ./hw.java
Hello, world!

real    0m0.252s
user    0m0.180s
sys     0m0.060s
« Змінено: 2006-05-12 19:16:44 від lvm »
[Fedora Linux]

zzandy

  • Гість
Re: Real-Time Java
« Відповідей #9 : 2006-05-13 14:10:04 »
// file: HelloApp.java

class HelloApp      {

      public static void main(String[] args)       {
            System.out.println("Hello world");
      }
}

// file: hello.cpp

#include <iostream>

int main()      {
      std::cout << "Hello world\n";
      return 0;
}

$ gcj HelloApp.java --main=HelloApp -o hello_java
...
$ g++ hello.cpp -o hello_cpp
...
$ time ./hello_cpp; time ./hello_java

Hello world

real    0m0.003s
user    0m0.002s
sys     0m0.001s
Hello world

real    0m0.055s
user    0m0.036s
sys     0m0.006s


Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3825
  • Карма: +11/-0
  • Програміст
Re: Real-Time Java
« Відповідей #10 : 2006-05-13 14:58:28 »
5 сотих секунди на ініціалізацію - це серйозний аргумент в бік Сі++.   ::)

Не вистачає ще варіантів на Сі, асмі, перлі, пітоні та пхп.
« Змінено: 2006-05-13 15:00:09 від lvm »
[Fedora Linux]

zzandy

  • Гість
Re: Real-Time Java
« Відповідей #11 : 2006-05-13 15:36:49 »
Різниця не в п`ять сотих, а більше ніж у десять разів. Але це просто відповідь на ваш попередній допис, я нічого не хотів сказати особливого і не збирався виводити, що java-масдай.
« Змінено: 2006-05-13 15:37:53 від zzandy »

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3825
  • Карма: +11/-0
  • Програміст
Re: Real-Time Java
« Відповідей #12 : 2006-05-13 16:58:13 »
Різниця не в п`ять сотих, а більше ніж у десять разів. Але це просто відповідь на ваш попередній допис, я нічого не хотів сказати особливого і не збирався виводити, що java-масдай.

Різниця між Сі++ та Сі - ще n разів (де n від 5 до 5000, в залежності від опцій компіляції). Куди котиться цей світ.   ::)
[Fedora Linux]

Відсутній Cthulhu

  • Кореспондент
  • ***
  • дописів: 183
  • Карма: +0/-0
Re: Real-Time Java
« Відповідей #13 : 2006-05-23 17:14:56 »
До речі, я тут подивився ці "тести" і спробував ще на кількох мовах. Спочатку запропоновані:
Java:
Hello world
 
real    0m0.449s
user    0m0.400s
sys     0m0.060s
--------
C++:
Hello world
 
real    0m0.004s
user    0m0.000s
sys     0m0.000s
--------
Тепер C:
int main(void)
{
  printf("Hello world\n");
}

Hello world
 
real    0m0.002s
user    0m0.000s
sys     0m0.000s
--------
Perl:
#!/usr/bin/env perl
print "Hello world\n"

Hello world
 
real    0m0.007s
user    0m0.000s
sys     0m0.000s
--------
І нарешті Python:
#!/usr/bin/env python
print "Hello world"

Hello world
 
real    0m0.025s
user    0m0.020s
sys     0m0.020s

Це не benchmark, але задуматись справді є про що...

zzandy

  • Гість
Re: Real-Time Java
« Відповідей #14 : 2006-05-23 18:26:42 »
Дуже цікаві результати перлу, хоча мені і не зрозумілі. Зробив в баші time echo "Hello world". На тій машині перл видає
real    0m0.008s
user    0m0.000s
sys     0m0.008s

a time echo "Hello world" по нулям. Висновок ....
Доречі, для більшої достовірності варто прогнати тест хочаб 10 разів. У мене перший прогін сильно відрізняється від всіх інших.
« Змінено: 2006-05-23 18:43:17 від zzandy »