LINUX.ORG.RU

Java не угрожают ни PHP, ни Ruby, ни C


0

0

Джеймс Гослинг (James Gosling), автор языка Java, на конфереции Sun World Wide Education & Research, заявил (English) о том, что для Java не являются большой угрозой новые языки, вроде PHP или Ruby, которые специализируются на своих отдельных областях. По мнению Гослинга, все они также страдают от проблем с производительностью и масштабируемостью. Что же касается C#, то, в глазах автора Java, он имел потенциал, но ровно до тех пор, пока Microsoft не сконцентрировалась на одной своей платформе. Гослинг также напомнил всем, что Java может работать в связке с другими языками.

Интересно также посмотреть ответы на эти заявления из лагеря поклонников динамических языков, например http://lesscode.org/2006/03/12/someon...

>>> Собственно заявление



Проверено: Shaman007 ()

"PHP and Ruby are perfectly fine systems," he continued, "but they are scripting languages"

Какой изящный оксюморон! :)

"Пиво совершенно замечательный напиток", он [Гослинг] продолжил, "но его пить надо"

"Автомобиль совершенно замечательное средство передвижения", он продолжил, "но на нем ездить надо".

Надо объявить конкурс на самое замечательное высказывание в стиле Гослинга.

anonymous
()
Ответ на: комментарий от anonymous

PyGTK никакого отношения к "машинным кодам" не имеет. Ты вторую часть поста того анонимуса не прочитал. Это ты чушь сморозил неподумавши.:)

anonymous
()
Ответ на: комментарий от r

Да ладно тебе! На чем тот же мегарулезный mod_php сделан? Зато картинки "на лету" строит. Посчитай, сколько тебе в жабе надо коду налабать для вывода диаграмке. А сколько в пых-пыхе на GD модуле?

anonymous
()
Ответ на: комментарий от anonymous

>На чем тот же мегарулезный mod_php сделан?

Угу. Охрененный сервер.

>Посчитай, сколько тебе в жабе надо коду налабать для вывода диаграмке.

Столько же. При чем попроще и с "эффектами" покруче.

>А сколько в пых-пыхе на GD модуле?

А что он уже научился считать длину стринга в немоноспейсед шрифте? Или афинные трансформации?

r ★★★★★
()
Ответ на: комментарий от anonymous

а тебе я советую прочитать первую часть, потом подумать, а уж потом говорить чушь :-)

anonymous
()

Не надоело еще постить новости со ссылками на английском? Здешняя публика и с русским-то не справляется, но, при этом, с легкостью рассуждает на любые темы. Большинство комментариев просто граничит с нелепостью.

anonymous
()
Ответ на: комментарий от eXOR

Гослинг написал Emacs http://en.wikipedia.org/wiki/Gosling_Emacs на C. За 10 лет до начала разработки Java, поэтому такое ответственное дело как разработка революционной концепции платформы и доверили ему. Головастый мужык, что ни говори

Естественно, он разрешал неограниченное распространение своей реализации. Как и Java, позже. Он был родоначальник свободного софта

Эхъ, достать бы исходники, посмотреть на череп с костями

anonymous
()
Ответ на: комментарий от r

2r:

>афинные трансформации

русский термин - 'афинные преобразования'.

По сабжу: Пеар. Гослинг в тему явно не вникал. Так, безапеляционная болтовня. Единственное, что, возможно, более-менее по делу - это про scalability.

Почему Bruce Eckel, который написал "Thinking in Java", сейчас пишет на Python? http://mindview.net/WebLog/log-0066

elio
()
Ответ на: комментарий от elio

> Почему Bruce Eckel, который написал "Thinking in Java", сейчас пишет на Python?

потому что леммингов, которые будут платить за модную книгу о модном питоне очень много...

anonymous
()
Ответ на: комментарий от elio

Потому что бапки надо зарабатывать. Тот же Эккель в декабре сделал 4-е издание Thinking in Java, которое не выкладывает на сайте а собирается продавать и навариться. Навариться на волне интереса к Java 5 & Java 6

Ссылка http://www.mindview.net/Books/TIJ4

anonymous
()
Ответ на: комментарий от anonymous

>потому что леммингов, которые будут платить за модную книгу о модном питоне очень много...

Видимо мысли о его доходах и о популярности питона Вас очень задевает, количество желчи прямо-таки зашкаливает.

Не стоит так переживать, питон имеет несколько другие корни чем жаба. Манагеры в штатах никогда не будут пускать слюну при упоминании Python (как было с жабой), так как некому промывать им мозги. Поэтому, всё-таки выгоднее переиздавать Thinking in Java.

elio
()
Ответ на: комментарий от elio

Конечно выгоднее. Java программистов Pro от 700 000, Java wannabe-программистов еще несколько миллионов. Это куда как больше чем несколько десятков тысяч питонистов

anonymous
()
Ответ на: комментарий от anonymous

2 anonymous (*) (16.03.2006 20:52:11):

> За 10 лет до начала разработки Java, поэтому такое
> ответственное дело как разработка революционной концепции
> платформы и доверили ему.
Если верить ученбнику: "Програмирование на Java" Н.А.Вязовик (который мне подарили на презентации товарищи из Sun, и который является оффициально залейбленым компанией Sun - читай что они считают его верным), то целью была вовсе не платформа. Смотрим что же пишут о цели: (стр 22 параграф второй снизу) "Цель они выбрали себе амбициозную - выяснить какой будет следующая волна развития компьютерной индустрии" и "С самого начала проект не рассматривался как чисто исследовательский, задача была создать реальный продукт, устройство".

Итак что имеем. товарищи: Патрик Нортон, Джеймс Гослинг, Майк Шеридан - получив задачей провести анализ следующей волны развития индустрии и создать устройство - потратили деньги инвесторов на развлечения (об этом см стр 23, параграф второй сверху "В апреле 1991 года комманда покидает оффис Sun, отключившись даже от внутренней сети корпорации... Закупаются разнообразные бытовые электронные устроства, такие как игровые приставки Nintendo, телевизионные приставки, пульты дистанционного управления...") и вместо результата ожидаемого выдали некую платформу (неудевительно, ведь Гослинг писал emacs - как говорится хорошую OS с плохим редактором). После попытки продажи их продукта выясняется что его никто не покупает (значит не был проведен анализ). И выясняется что продукта как такового у них нет, а есть только платформа. То есть не была выполнена ни одна из поставленых задач.

В общем если бы у нас ребята такое провернули то получили бы или срок за растрату в особо крупных, ну "или просто деревянные костюмы". В зависимости от того гос. структура у них или частная. Так то.


2 anonymous (*) (16.03.2006 16:44:29):

> Бред. Они еще тогда могли на корню скупить Delphi,
> нативную и очень популярную. Вместе с Борланд, которая
> как известно JBuilder делала

Кто бы им дал? 1999 - 2000 у них были такие проблемы с антимонопольным комитетом и другими компаниями.. собственно эти проблемы и были причиной ссоры с Sun. (речь о Microsoft и .NET).

eXOR ★★★★★
()
Ответ на: комментарий от r

> Угу. Охрененный сервер.

Слив принят! Ты мне скажи, сколько проектов реализовано на PHP? А сколько на EJB. Я имею в виду завершенные проекты, а не "освоение средств".

> Столько же. При чем попроще и с "эффектами" покруче.

Обоснуй.

> А что он уже научился считать длину стринга в немоноспейсед шрифте? Или афинные трансформации?

Да ты просто необразован!

imageloadfont

byte 8-11 int pixel width of each character

Меняй погоняло! ТЫ СДЕЛАН!!!

anonymous
()
Ответ на: комментарий от PartyZan

Я не пых-пых кодер. Я как раз пишу под JSR184. Однако если wannabe- жабакодеришко с погонялой r принародно облажался с незнанием того, как получить в пыхе pixel width of _each character+ & pixel height of _each character_, то это проблемы его полового созревания.:)

PS. Для тех кто в танке. Eclipse сайт на PHP:

http://www.eclipse.org/legal/eplfaq.php

anonymous
()
Ответ на: комментарий от eXOR

Да не так все плохо. Жаба - идеальное средство для

1) академических апплетов университетских сетей.

2) мидлетов для телефонов низкой и средней (JSR172, JSR184) ценовой категории.

Просто на сервак ставить жабу было глупостью. Если, например, Resin и Tomcat работают по разному, то можно нарваться на всякое. Характерный пример, что оч-ч-чень важное НЕ описано в спецификации сервлетов - это классика. Читайте ВНИМАТЕЛЬНО спеку.

Кроме того, появление различных абсолютно несовместимых ормов и MVC привело к "вавилонскому столпотворению". Если J2ME все-таки пока достаточно стандартна, то "стратсеры" и JFSщки абсолютно разные кодеры для работодателя, да еще "тейпстрпёры" воду мутят. То же и АОП - сколько наплодили от спринга до жбосса и еклипса.

Кароче, идиот этот "лохматый", раз он такой базар принародно завёл. Флейм для закомплексованных воннабижабабыдлокодеров - да и только! Никогда свой продукт нельзя сравнивать с "возьмем Обычный порошок"(c) :)

anonymous
()
Ответ на: комментарий от anonymous

Обрати внимание на http://www.jfree.org/jfreechart/samples.PHP Ты сам себя высек!:)

Во-вторых, ты даже не понял о чем речь. Ты не въехал, что надо было дать сцылку.

http://homepage.ntlworld.com/richard_c_atkinson/jfreechart/

Вывод - ты не работал с этим "мегарулЁзом".

Так, что кончай курить.

В-третих, на чем написАли GD, а на чём напИсали jfreechart. Тебе про gc в жабе рассказать или сам самообразуешься?:)

anonymous
()
Ответ на: комментарий от elio

>Почему Bruce Eckel, который написал "Thinking in Java", сейчас пишет на Python?

А еще он написал Thinking in C++, Thinking in C#, Thinking in Python. Может потому что он писатель? ;)

r ★★★★★
()
Ответ на: комментарий от anonymous

Извини меня, но называть сервером "mod_php"....

> Ты мне скажи, сколько проектов реализовано на PHP? А сколько на EJB.

А сколько софта под винду написано на VB? Ты что думаешь это что-то доказывает? Большинство проектов которые пишутся на entreprise java - это не сайтики торчащие в снаружу.

>Да ты просто необразован!

Ты даже не понял, что я спросил. Это функция загружает bitmap font. В своем раненом формате, и более того: The font file format is currently binary and architecture dependent. This means you should generate the font files on the same type of CPU as the machine you are running PHP on.

Повторяю вопрос - он уже научился считать _длинну стринга_ в true type non monospaced шрифте?

r ★★★★★
()
Ответ на: комментарий от anonymous

>Тебе про gc в жабе рассказать или сам самообразуешься?:)

А еще расскажи про GC в лиспе, хаскеле, окамле и прочих дотнетах.

r ★★★★★
()
Ответ на: комментарий от anonymous

1) А какая мне должнга быть разница на чём сделана страничка?

2) Я на занимаюсь веб. Но знаю, что есть приблуда для построения
графиков которую можно использовать в том числе и для веб, но
которую я использовал в Swing'ах

3) Сразу извиняюсь, что процитирую вас (не люблю на "сам дурак"
переходить)

> Посчитай, сколько тебе в жабе надо коду налабать для вывода
> диаграмке

В ответ я привёл Java аналог, который позволяет графики строить
несколькими строчками.

4) Я не в курсе на чём написали GD

5) Не нужно вот так вот делать:

> Тебе про gc в жабе рассказать или сам самообразуешься?:)

Это по меньшей мере не прилично переходить на личности.
Про GC, я думаю, знаю побольше вас, если уж на то пошло.

anonymous
()
Ответ на: комментарий от anonymous

Ладно, sorry за "стиль профессора Луговского" - просто захотелось 
постебаться.:)

Вы поймите, что инструмент выбирается под задачу. Я знаком с 
JFreeChart и JFreeReport. Естественно, что они требуют еще одного слоя
 - JCommon.
Это еще терпимо в однопользовательской среде. Но на сервере наплодите 
кучу объектов. Бедный gc!:(

GD (точнее GD2)- смотрите исходники

Диаграмка на GD очень просто строится. Draft такой сразу напрашивается:

  $length = 150;
  $width  = 150;
  $dia_width= 15;

  $im = ImageCreate($length + 20, $width * 2 + 20);
  $bg = ImageColorAllocate($im, 255, 255, 255);
  $black = ImageColorAllocate($im, 0, 0, 0);

  $cx = $length/2;
  $cy = $width/2;

  $color[0]      = ImageColorAllocate($im, 255,  0, 0);
  $color_dark[0] = ImageColorAllocate($im, 128,  0,  0);

  $color[1]      = ImageColorAllocate($im, 128,  0, 128);
  $color_dark[1] = ImageColorAllocate($im,  64,  0, 64);

  $color[2]      = ImageColorAllocate($im, 0,   255,   0);
  $color_dark[2] = ImageColorAllocate($im, 0,   128,   0);

  $color[3]      = ImageColorAllocate($im, 0,   128, 128);
  $color_dark[3] = ImageColorAllocate($im, 0,    64,   64);

  $color[4]      = ImageColorAllocate($im, 0,    0,    255);
  $color_dark[4] = ImageColorAllocate($im, 0,    0,    128);

  // может быть и динамически формируемый массив - это просто пример для 5 бального голосования

  $data = array();

  array_push($data, $m1);
  array_push($data, $m2);
  array_push($data, $m3);
  array_push($data, $m4);
  array_push($data, $m5);

  $num = count($data);

  $sum_votes = 0;
  for ($i = 0; $i < $num; $i++) {
    $sum_votes = $sum_votes + $data[$i];  
  }
  $coeff = 360 / $sum_votes;

  
  for ($j = ($cy + $dia_width); $j > $cy; $j--) {
      $angle = 0;
      for ($i = 0; $i < $num; $i++) {
          ImageFilledArc($im, $cx, $j, $length, $width/2, $angle, $angle+$data[$i] * $coeff, $color_dark[$i], IMG_ARC_PIE);
          $angle = $angle + $data[$i] * $coeff;
      }
  }

  $angle=0;
  for ($i = 0; $i < $num; $i++) {
      ImageFilledArc($im, $cx, $j, $length, $width/2, $angle, $angle+$data[$i] * $coeff, $color[$i], IMG_ARC_PIE);    
      $angle = $angle + $data[$i] * $coeff;
  }

  for ($i = 0; $i < $num; $i++) {
      ImageFilledRectangle($im, 0, $width + 22 * $i, 20, $width + 22 * ($i + 1) - 2 , $color[$i]);
      $txt_mark  = iconv("windows-1251", "UTF-8", " баллов"); 
      $txt_votes = iconv("windows-1251", "UTF-8", " голосов"); 
      ImageTTFText($im, 10, 0, 30, $width + 22 * ($i + 1) - 6, $black, getcwd()."/arial.ttf", ($i+1) . $txt_mark . ": " . $data[$i] . $txt_votes);      
  }

  $txt_all = iconv("windows-1251", "UTF-8", "Всего голосов"); 
  ImageTTFText($im, 10, 0, 0, $width + 22 * 6, $black, getcwd()."/arial.ttf", $txt_all . ": " . $sum_votes);      

  $txt_avg = iconv("windows-1251", "UTF-8", "Средний бал"); 
  $sum = 0;
  for ($i = 0; $i < $num; $i++) {
    $sum = $sum + $data[$i] * ($i + 1);  
  }
  $avg = $sum / $sum_votes;

  $avg_text_float = sprintf("%4.2f", $avg);

  ImageTTFText($im, 10, 0, 0, $width + 22 * 7, $black, getcwd()."/arial.ttf", $txt_avg . ": ". $avg_text_float);      

  header("Content-type:image/png");
  ImagePNG($im);
  ImageDestroy($im);

Ну и вызов:

  echo "<img src='pie.php?m1=10&m2=10&m3=6&m4=10&m5=20'>";

Усовершенствования сразу можно внести - автомосштабируемость.

Для вычисления длины/высоты строки (немоноширинной!!!) можно свою функцию на С создать.

Сравниете производительность с JFreeChart+JSP. Используйте - это GPL:)

Удачи!

anonymous
()
Ответ на: комментарий от r

Это тут Луговский давно уже объяснил. Про свип энд уин.

А главное, что он здесь объяснил - это, чтобы ты хорошо учился.

Слив принят!

anonymous
()
Ответ на: комментарий от anonymous

> Я на занимаюсь веб

Тогда и не говорите лишнего. И не пытайтесь показать себя всезнайкой. А то нехорошо получается.

anonymous
()
Ответ на: комментарий от anonymous

Ну как там, wannabe r, додумались? :) Или как?:) Хи-хи-хи!:)

anonymous
()
Ответ на: комментарий от anonymous

> Про свип энд уин.

А про heap compaction ты забыл? И про его отсутсвие в язычках без GC и как это влияет на долго работающие приложения?

Ах да как же ж это загрузка фонтов, а потом ручное их освобождение. И релизинг имаджей ручной. Не дай бог кто-то угнет эту страничку гдето в середине - сервачку ж песец наступит.

r ★★★★★
()
Ответ на: комментарий от anonymous

> Тебе показать как или сам додумаешься?

Покажи покажи.

r ★★★★★
()
Ответ на: комментарий от anonymous

Кусок сервлета аналогичный приведённому:

int length = 150;
int width = 150;
int dia_width = 15;

int cx = length / 2;
int cy = width / 2;

Color[] color = new Color[] {
new Color(255,0,0),
new Color(128,0,128),
new Color(0,255,0),
new Color(0,128,128),
new Color(0,0,255)
};

Color[] color_dark = new Color[] {
new Color(128,0,0),
new Color(64,0,64),
new Color(0,128,0),
new Color(0,64,64),
new Color(0,0,128)
};

BufferedImage result = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2d gr = createGraphics.createGraphics();

int [] data = new int[] {
Integer.valueOf(get(m1)),
Integer.valueOf(get(m2)),
Integer.valueOf(get(m3)),
Integer.valueOf(get(m4)),
Integer.valueOf(get(m5))
};

int num = data.length;

int sum_votes = 0;
for (int i = 0; i < num; i++) {
sum_votes += data[i];
}

int coeff = 360 / sum_votes;


for (int i = 0; i < num; i++) {
gr.setSolor(color[i]);
gr.fillRect(0, width + 22 * i, 20, width + 22 * (i + 1) - 2);
gr.setColor(Color.BLACK);
gr.drawString(Integer.toString(data[i]), data[i], 22 * (i+1) * 6, 30);
}

// Тут результирующие надписи и прочее и прочее

ImageIO.write(result, "png", out);

А теперь в доки про Java2D API.

Ну и вызов:

в html <img src='servlet?m1=10&m2=10&m3=6&m4=10&m5=20'>

И никаких jfreechart. И производительность не хуже уже в любом случае чем у приведённого когда

удачи

anonymous
()
Ответ на: комментарий от r

Ну чего, заранее признаешь себя пораженцем? :) :) :)

НАРОД ВСЕ СЮДА! СЕЙЧАС ГНИЛЫЕ АПЕЛЬСИНЫ РАЗДАВАТЬ БУДЕМ!

anonymous
()
Ответ на: комментарий от anonymous

Кстати " не занимаюсь" не есть "не занимался" телепат вы наш

anonymous
()
Ответ на: комментарий от anonymous

Я игрался с JFreeChart. Равно как и с 2D.

Нет, это не аналог моего кода.:( Ну а теперь вставьте все это в сервлет / JSP. Сравните 100% аналог.:)

> И производительность не хуже уже в любом случае чем у приведённого когда

Посмотрите сколько объектов наплодили.

anonymous
()
Ответ на: комментарий от anonymous

Да все эти объекты умрут в молодом поколении и GC даже не заметит этого. Этот код вставится в Servlet без проблемю

anonymous
()
Ответ на: комментарий от anonymous

>> J2ME есть пересечение с другими системами

>http://www.w3schools.com/dotnetmobile/default.asp

И в каком месте сие есть полноценная платформа? Напомню, что на J2ME пишутся в основном игры.

Исходники тетриса на .NET Mobile в студию.

Ardolynk
()
Ответ на: комментарий от anonymous

Вы полное решение представьте. А потом отпрофилируйте. Теоретически мы все сильны философствовать.:)

---------------------------------

Кстати, а куда вычислитель длины строк подевался? Слинял?

anonymous
()
Ответ на: комментарий от anonymous

SwingUtilities.computeStringWidth() - медитируй.

А что тут профилировать. Я не сохрянял нигде ссылок - поэтому GC собирёт эти объекты в первый же свой проход по молодому поколению.

anonymous
()
Ответ на: комментарий от anonymous

эх сколько слов что де на php много сайтов, на java меньше и из этого пытаются сделать аргумент. Разговаривая недавно с одним человеком, держащим сайт, посвященный java задал ему вопрос - а почему сайт то на пхп - ответ был один - хостинг с java стоит денег. И это действительно единственная причина (равно как и простота) почему PHP популярен. И не надо приводить в пример OSCommerce - если Zend регулярно кричит что PHP созрел до enterprise рынка, разве это не говорит об обратном?

вам нужны примеры? http://atlassian.com/software/jira/ лучшая Bug Tracking, Issue Tracking, & Project Management cистема (да да против trac я ничего не имею, но аналоги на пхп есть?). или вот ещё изучите http://manageengine.adventnet.com/

vansickle
()
Ответ на: комментарий от r

Если уж вам new Ciolor не нравиться.. То вы конечно можете его в сервлете заэкстрактить в static final поле - это сократит немного времени. Но это я не считаю таким уж критинычм, но то что это разумное замечаение - согласен.

anonymous
()
Ответ на: комментарий от r

ВНИМАНИЕ: КОД ДЛЯ TTF!!!

ВСЕ - ТЫ СДЕЛАН!!!!!! 


  $str  = "Hello, World!";
  $path=getcwd();

  $font = $path . "/arial.ttf";
  $array = imagettfbbox ( 12, 0, $font, $str);
  echo $array[2] - $array[0];

  echo "<p>";


  $font = $path . "/impact.ttf";
  $array = imagettfbbox ( 12, 0, $font, $str);
  echo $array[2] - $array[0];

  echo "<p>";


  $font = $path . "/times.ttf";
  $array = imagettfbbox ( 16, 0, $font, $str);
  echo $array[2] - $array[0];

  echo "<p>";


  $font = $path . "/arial.ttf";
  $array = imagettfbbox ( 14, 0, $font, $str);
  echo $array[2] - $array[0];


-------

Или с "линеечкой"


  $length = 200;
  $width  = 200;

  $str  = "Hello, World!";
  $path=getcwd();

  $size = 16; // поиграемся:)

  $font = $path . "/arial.ttf";
  $array = imagettfbbox ( $size, 0, $font, $str);
  $sl = $array[2] - $array[0];
  

  $im = ImageCreate($length, $width);
  $bg = ImageColorAllocate($im, 255, 255, 255);
  $black = ImageColorAllocate($im, 0, 0, 0);
  $blue = ImageColorAllocate($im, 0, 0, 255);

  ImageTTFText($im, $size, 0, 0, 50, $black, $font, $str);      

  imageline($im, 0, 10, $sl, 10, $blue);

  header("Content-type:image/png");
  ImagePNG($im);
  ImageDestroy($im);




anonymous
()
Ответ на: комментарий от anonymous

Да это не мне не нравится. Просто этот PHPшник реально думает что "new Color()" это "вон сколько объектов наплодили" а $color[0] = ImageColorAllocate($im, 255, 0, 0); или даже $length = 150; ему дался совершенно бесплатно...

r ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.