Вечный вопрос, скорость Java
От: Astellar  
Дата: 05.05.04 06:07
Оценка:
Господа специалисты по Java. Традиционно сложилось мненеи, что Java Machine работает медленнее, чем native код. Ну это понятно. Хотя постоянно попадаются крамольные статейки, где тестеры утверждают, что программы на Ява работают не медленнее, чем на Си, и приводят примеры и тесты. Не знаю.
Создатели платформы .NET утверждают, что программы в ней работают намного быстрее, чем программы на Яве. Хотя, насколько я попнимаю, в общем и целом, суть одна — некая виртуальная машина. В чем разница я не совсем понял.
Да. вроде как под .NET можно скомпилить чистый native код. А можно ли такое сделать на Ява? По логике, предусмотреть такую возможность — значит пресечь многие проблемы на корню: хотите работать без вирт. машины — пожалуйста. При этом теряется то, ради чего Ява была задумана, но приобретается скорость. Некоторые утверждают, что скомпилить native код с явовской программы можно. Другие говорят, что этот, допустим, ече файл (если речь о виндах) просто будет сам представлять из себя миниатюрную явы машину плюс нашу программу, и ни о какой скорости и речи быть не может.
Очень интересно,кто что знает и думает по этому поводу?
Я весьма доверчив, когда речь идет о моих словах. Я верю всему, что
говорю, хотя и знаю, что я лжец.
Re: Вечный вопрос, скорость Java
От: Victor Repetsky Украина  
Дата: 05.05.04 08:36
Оценка: 6 (4)
Здравствуйте, Astellar, Вы писали:

A>Очень интересно,кто что знает и думает по этому поводу?

По поводу скорости. Говорить о производительности Java-программ надо в контексте задач.
Наиболее известные проблемные вещи — это
1. GUI-библиотека Swing.
2. Entity EJB на больших выборках.
3. Некоторые приложения активно работающие с памятью или просто игнорирующие некоторые практики.
По 1. есть множество альтернатив: SWT, LwVCL, Thinlet, можно посмтреть j-smile по поводу потенциальных возможностей легковестных Java-приложений (это кстати и к вопросу о том сколько весит VM).
Кроме того эта проблема постепенно решается с выходом новых сановских VM и увелиением производительности компьютеров. Существует множество Swing приложений, которым отностильная ресурсоемкость не помешала стать популярными.
По 2. опять же есть альтернативные подходы, напимер самое простое — JDBC, также можно посмтореть Hibernate и Spring, есть и обходные пути в рамках EJB.
По поводу практик и памяти — есть множество хороших источников информации о том как надо (а точнее как не надо) писать. Некоторые:
книга "Горький вкус Java",
http://otn.oracle.com/products/ias/pdf/performance-best-practices.pdf (в основном web и JDBC),
статьи на theserverside.com.
Недавно производил анализ производительности JSP vs PLS. Результат для простой выборки на медленной БД оба вдали 60мс, на быстрой оба 8мс. Вывод по сравнению с БД Java не дает заметного оверхэда и для вэб по производительности подходит не меньше других технологий. Не говоря о возможностях которые она дает для веб. Так что прежде чем говорить что что-то торомозит надо провоить анализ, профйалинг и т.д.

По поводу компиляторов и VM. Есть хорошие оптимизирующие компиляторы, например GJC, Excelsior. Да, скомпилированное так или иначе содержит VM, но на C тоже практически все приложения используют CRT. Вопрос в том насколько довесок большой и критично ли это для приложения.

Всего хорошего.
Виктор.
SCJP, SCEA
Re: Вечный вопрос, скорость Java
От: Blazkowicz Россия  
Дата: 05.05.04 14:18
Оценка: 2 (1) +1 -1
Здравствуйте, Astellar:

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

Если очень хочется высокопроизводитеьны участки в java, то можно интегрировать нативный код по средствам JNI.

Кроме всего этого java медленне нативного кода далеко не на порядок, а лишь на несколько процентов, число которых редко достигает 10. Таким процентами часто можно принебречь, сэкономив большую часть бюджета. Ведь разработка на java дешевле и быстрее.
Re[2]: Вечный вопрос, скорость Java
От: Astellar  
Дата: 06.05.04 06:09
Оценка:
Здравствуйте, Blazkowicz,
На самом деле я не говорю, что Ява тормозит, поэтому Ява это плохо. Я просто хотел получить информацию и разъяснения, частично я их получил.
И тут меня мучает совсем уж тупой вопрос: Если можно генерировать найтивный код...
почему не поступают так:
берут, создают приложение, и компилируют нейтив код для всех платформ. Код-то переписывать не надо!
а 10% выигрыш, который это может дать, и отсутствие Ява машины в системе может понравится людям.
Я весьма доверчив, когда речь идет о моих словах. Я верю всему, что
говорю, хотя и знаю, что я лжец.
Re[3]: Вечный вопрос, скорость Java
От: Cider Россия  
Дата: 06.05.04 06:22
Оценка:
Здравствуйте, Astellar, Вы писали:

A>Здравствуйте, Blazkowicz,

A>На самом деле я не говорю, что Ява тормозит, поэтому Ява это плохо. Я просто хотел получить информацию и разъяснения, частично я их получил.
A>И тут меня мучает совсем уж тупой вопрос: Если можно генерировать найтивный код...
A>почему не поступают так:
A>берут, создают приложение, и компилируют нейтив код для всех платформ. Код-то переписывать не надо!
A>а 10% выигрыш, который это может дать, и отсутствие Ява машины в системе может понравится людям.


В принципе, во время исполнения байткода так и происходит... Но не во время компиляции.
1. Сколько вариантов нативного кода придется компилировать ?
2. Что делать со встроенными фишками виртуальной машины, такими как проверка безопасности кода во время исполнения ?

Cider
Cider
Re[4]: Вечный вопрос, скорость Java
От: Astellar  
Дата: 07.05.04 08:22
Оценка:
В общем, понятно.
Осталось разобраться в принципиальной разнице .NET и Java, если она имеется
Я весьма доверчив, когда речь идет о моих словах. Я верю всему, что
говорю, хотя и знаю, что я лжец.
Re[5]: Вечный вопрос, скорость Java
От: Blazkowicz Россия  
Дата: 07.05.04 11:54
Оценка:
Здравствуйте, Astellar, Вы писали:

A>В общем, понятно.

A>Осталось разобраться в принципиальной разнице .NET и Java, если она имеется

Какие мелочи... В двух словах:

C# как язык гораздо более приятнее.
Java приложения легче портировать на разные платформы.
Существует огромное количество бесплатных решений на Java.
Ну и за что я люблю Java, так это за IntellijIDEА. Не смотря на плагин от JetBrains для студии, студия остаётся студией.
.NET Framework содержит больше багов, потому как гораздо моложе.
.NET Framework имеет более простое и логичное именование классов.

А вообще шукайте .NET vs Java в "Священных Войнах".
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.