Войти
ФлеймФорумОбщее

Конец Java? (2 стр)

Страницы: 1 2 3 412 Следующая »
#15
12:55, 9 ноя. 2010

Серый крокодильчик
> Скорее всего чтобы работать с Ораклом на Яве, а это самый популярный язык для
> него
Самый популярный язык для Оракла - PL/SQL. Яве в основе своей похрен с какой БД работать.

_g
> а главное - тру кроссплатформенность
На практике ява не кроссплатформеннее кроссплатформенного С++.

Серый крокодильчик
> необязательно
По опыту скажу, что ява не сильно отстает в некотором наборе задач, когда, пардон, просрётся.
Однако вцелом она в разы тормознее, жрет в разы больше памяти, приложения запускаются очень долго, отчего отладка с частым запуском превращается в мучение.


#16
12:55, 9 ноя. 2010

>> Не стоит сравнивать медленную Java и быстрый C++. ,
>необязательно
>http://habrahabr.ru/blogs/programming/66562/
тот тест не достаточен.

> для каких целей нужен C++ и не годится Java?
Gamedev, системное программирование, обработка графики, расчеты. Напиши Maple или Photoshop на Си без классов.

#17
12:58, 9 ноя. 2010

Aroch
> что за убогий тест? Тест реального алгоритма расставил бы все точки над i,
> например поиск пути.
http://shootout.alioth.debian.org/u64/benchmark.php?test=meteor&lang=all
еще пример
Ява проигрывает в 2 раза только одному из 5 вариантов, остальные либо сливают, либо уже близки.
НО! код на Яве в данном примере ужасен. Хотя бы с точки зрения работы с массивами.

#18
13:02, 9 ноя. 2010

Spartan
> По опыту скажу, что ява не сильно отстает в некотором наборе задач, когда,
> пардон, просрётся.
всмысле, когда "просрется"?
Ява так устроена, она разгоняется по ходу.
Spartan
> жрет в разы больше памяти,
в этом согласен, потребление памяти большое.

akaAngeL
> Gamedev
да и сервера линейки на яве писали и шутеры писали, правда там рендер был на плюсах, но все остальное на Java

#19
13:06, 9 ноя. 2010

Den Zurin
> Она во многом превосходит C++.
Разъясните мне пожалуйста, чем java превосходит С++? Теоретически, так как java является более интерпретируемым языком, нежели компилируемым, она должна обладать высокоуровневыми и удобными средствами. Но вместо этого я лишь вижу сильно урезанный С++ со сборкой мусора.

Den Zurin
> Вот, например, в Java можно проверить принадлежность объекта к классу. Можно ли
> это сделать в C++?
Без проблем, делаешь dynamic_cast, сравниваешь результат с нулем.

Den Zurin
> можно использовать класс Object, а примитивные типы (int, char и т.д.)
> преобразовывать в классы с помощью классов-оболочек

Ничего не мешает в С++ отнаследовать самому все классы от своего Object, и создать свои классы оболочек для примитивных типов. Или можно кастить к void *

Я сейчас изучаю java и вижу кучу недостатков по сравнению с С++:
1. Нет перегрузки операторов. Оператор == лишь сравнивает ссылки, и для сравнения объектов нужно писать менее понятный obj1.equals(obj2) код. А создавать свои типы данных типа математических векторов/матриц вообще нельзя нормально, некрасиво же писать что-то типа mat1.mul(vec1).add(vec2) вместо mat1*vec1+vec2
2. все объекты создаются в куче с помощью new - сразу удар по производительности, так как на каждый чих будет перевыделяться память.
3. Самый огромный по мне недостаток это сборка мусора, и соответственно отсутствие деструкторов, finalization будет вызвана совершенно непонятно когда. В С++ очень удобно делать чистку ресурсов или еще какие полезные действия в деструкторе, вызов которого вставляет во всех нужных местах сам компилятор. В java же получается эту всю работу нужно делать вручную? Хотя можно пожалуй использовать try/finally везде.

Java пожалуй хорош только ради своей кроссплатформенности и защищенности, других достоинств не вижу, С++ на порядок удобнее и мощнее.

#20
13:11, 9 ноя. 2010

ud1
> 2. все объекты создаются в куче с помощью new - сразу удар по
> производительности, так как на каждый чих будет перевыделяться память.
Немного не верно - это в С++ new дергает операционную систему, Java же работает с пулами памяти, что будет быстрее
http://www.ibm.com/developerworks/ru/library/j-jtp10283/
http://www.ibm.com/developerworks/ru/library/j-jtp11253/
http://www.ibm.com/developerworks/ru/library/j-jtp01274/

#21
13:13, 9 ноя. 2010

Конечно Java умерла, её же давно победил C#.
/убежал

#22
13:16, 9 ноя. 2010

Серый крокодильчик
> Немного не верно - это в С++ new дергает операционную систему, Java же работает
> с пулами памяти, что будет быстрее

В борландовском билдере тоже? У борланда таки очень хорошее управление памятью.

#23
13:17, 9 ноя. 2010

ud1
> так как на каждый чих будет перевыделяться память.

Справедливости ради нужно сказать, что при сборщиках мусора new может быть тривиальным, когда поддерживается не только удаление неиспользуемых объектов, но еще и их "уплотнение" в памяти после удаления. Но вот зато объясните мне, как Java может быть быстрой, если вместо std::vector<KisaQQ> на тру Java нужно делать Vector (не дженериковый) Object'ов и в рантайме кастить Object'ы в KisaQQ (не говоря уже о том, что программисту приходится делать работу за компилятор - проверять типы). При этом сами экземпляры будут разбросаны по всей памяти практически случайно, а не локально, как в случае std::vector.

#24
13:20, 9 ноя. 2010

если бы не гугл со своим Android java бы знал ток по школьной программе (

#25
13:23, 9 ноя. 2010

TarasB
> В борландовском билдере тоже?
ЕМНИП, там специальные пулы только для компонентов.
Spartan
> Самый популярный язык для Оракла - PL/SQL. Яве в основе своей похрен с какой БД
> работать.
блин, естестенно не для хранимок, а для ПО под Оракл. Просто выразился не корректно.

#26
13:25, 9 ноя. 2010

Spartan

> На практике ява не кроссплатформеннее кроссплатформенного С++

ну мы не забываем про область применимости (зависимость от поставленной задачи). да и сравнивать Java с C++ — глупо. а вот с .NET — вполне можно.

#27
13:36, 9 ноя. 2010

Серый крокодильчик
> Немного не верно - это в С++ new дергает операционную систему, Java же работает
> с пулами памяти, что будет быстрее
В С++ можно самому как угодно организовать пул, вот только как правило это не требуется. Я говорю, что в С++ для создания объекта в стеке вообще ничего не нужно, а в жаве это как минимум вызов нетривиальной функции + скажем конструктор по умолчанию обнуляющий члены.
К тому же сборка мусора способствует написанию говнокода, если в С++ нужно продумывать, кто где создает объекты, и когда их удаляет, что приводит к более тщательной разработке и структурированию кода, то в java будет уже просто мешанина, кто кто хочет, тот что угодно и делает.

Далее хранение и кода и описания в одном и том же файле может ухудшить читабельность кода. protected работает не так как в С++. Отсутствие инклудов приводит к необходимости компилятору искать нужные  классы по всем импортируемым файлам, что приводит к замедлению компиляции. Отсутствует множественное наследование.

#28
13:36, 9 ноя. 2010

по поводу гд, можете посмотреть jbullet.. медленнее сишной реализация но тем не менее он есть)

#29
13:37, 9 ноя. 2010

Вот бы и правда C/C++/Java/.NET умерли. Сколько можно жить.

Страницы: 1 2 3 412 Следующая »
ФлеймФорумОбщее