Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 5 основных отличий между Java и C++ 
:(
    Опции темы
raiskaa
Дата 8.5.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.5.2006

Репутация: нет
Всего: нет



5 основных отличий между Java и C++

нашла по этой теме довольно много материала, но там слишком подробно, слишком длинно и для проффи. 
я же только начинаю изучать и мне нужны именно главные отличия. 
Например,  я нашла, что в   Java в отличии от С++ есть встроенная (автоматическая) функция "сбора мусора", или, например , что Java не позволяет "многонаследования". Это правильно?
Можете подсказать еще? smile 

Спасибо 
PM MAIL   Вверх
powerOn
Дата 8.5.2006, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата

Например,  я нашла, что в   Java в отличии от С++ есть встроенная (автоматическая) функция "сбора мусора", или, например , что Java не позволяет "многонаследования". Это правильно?

правильно.

В Java нет указателей в отлиичии от C++
B Java нет глобальных переменных.
.........

Цитата

нашла по этой теме довольно много материала, но там слишком подробно, слишком длинно и для проффи. 


Все отличия хороши, выбирай на вкус!  smile

Добавлено @ 14:57 
Java - это чистый ОО язык, С++ - гибридный. 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
Sherst
Дата 8.5.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 26.10.2005

Репутация: нет
Всего: 2



"Многонаследование" существует только для интерфейсов 
PM MAIL   Вверх
LSD
Дата 8.5.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Вообщем все верно.

Основное отличие Java от С++ состоит в том, что Java это в первую очередь платформа:
  • среда выполнения (JRE)
  • библиотека стандартных компонентов (framework)
  • язык программирования Java

Есть и языковые отличия, в основном касаются работы с указателями. В частности вообще нет поинтерной арифметики, указателей на функции и т.п.
А какова собственно цель вопроса? 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
ALKS
Дата 8.5.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



"многонаследование" smile

существенных отличий гораздо больше чем 5. даже если сравнивать строго языки, а не стандартные библиотеки.
Проше сказать чем они похожи - С без плюсов подобный синтаксис у обеих и на этом сходство заканчиваеться. 
PM   Вверх
raiskaa
Дата 8.5.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.5.2006

Репутация: нет
Всего: нет



Извиняюсь за "многонаследование", конечно "множественное наследование". Это я просто читаю на англ., финском и русском, пытаясь найти инфу, вот в голове и каша smile 
Цель вопроса - хочу попасть на курсы по программир-ю, попала в 30 чел. отобранных на собеседование, теперь дали задание на дом: 20 вопросов, отберут 16 чел. Хочу очень, нет - просто надо! smile 
Спасибо всем отозвавшимся, теперь буду формулировать это по фински. smile 
 
PM MAIL   Вверх
w1nd
Дата 8.5.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Открываете Google и пишете запрос: "java and c++ differences". На первой же странице куча ссылок.  Это во-первых. А во-вторых, как верно заметил LSD, Java - это платформа, а C++ - это язык (или язык плюс некоторое количество стандартных библиотек, если рассматривать стандартный ANSI C++). Вообще некорректный вопрос, короче. 

Это сообщение отредактировал(а) w1nd - 8.5.2006, 21:53


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
jxr
Дата 8.5.2006, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 31.7.2005

Репутация: нет
Всего: нет



a)
C++ code - ANSI code.
Java code - Unicode code.

b)
C++, int x;  if( x ) block1; else block2;
Java, boolean con; if( con ) block1; else block2;
 
PM MAIL   Вверх
w1nd
Дата 9.5.2006, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(jxr @ 8.5.2006,  23:26)
a)
C++ code - ANSI code.
Java code - Unicode code.

b)
C++, int x;  if( x ) block1; else block2;
Java, boolean con; if( con ) block1; else block2;

Первый пункт - неверно, второй - явно далекое от основных отличие. 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Void
Дата 9.5.2006, 01:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(w1nd @  9.5.2006,  02:01 Найти цитируемый пост)
второй - явно далекое от основных отличие

В принципе, это следствие из весьма важного отличия Java — типобезопасности, как статической, так и в рантайме. Java позволяет гораздо меньше «тихих» приведений типов, а некорректная интерпретация типа объекта ведет, в отличие от C++, не к неопределенному поведению (читай, непредсказуемым граблям), а к выбросу исключения. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
sergejzr
Дата 9.5.2006, 01:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



  • C++ - машинный код / Java - интерпретируемый код (необходим интерпретатор - JVM) 
    (Тут как следствие несколько пунктов Платформонезависимость в обмен на зависимость от JVM,  Типы (размер) в С++ не определены точно и зависят от компилятора, а на Java типы на всех платтформах одинаковы. )
  • С++ "- Возможно всё, чтего только пожелает программист!" перегрузка операторов, наследование итд. / Java - Возможно только то, что разработчики Явы посчитали логически безопасным. (Этот пункт тоже можно развить на несколько: Перегрузка операторов, множественное наследование итд.)
  • С++ - не полностью Обьектно-ориентированный (возможна смесь с Си, #define и прочие извращения) / Java - полностью обьектно-ориентированный. 
  • С++ - Программист полностью сам котроллирует состояние программы, валидность указателей итд./  Java - этим забавляется сборщик мусора и среда Runtime
  • C++ - множество библиотек различной степени свежести и помятости  / Java - стандартные библиотеки, распространяемые с JVM, в которых шанс выстрелить себе в ногу сведена практически до нуля
Остальные отличия, как например синтаксис, ява-специфичные степени инкапсуляции ("protected"), особенности поиска библиотек компилятором итд.  присутствуют также, но ИМХО отходят далеко на второй план
      


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
w1nd
Дата 9.5.2006, 01:27 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(Void @ 9.5.2006,  01:01)
В принципе, это следствие из весьма важного отличия Java — типобезопасности, как статической, так и в рантайме. Java позволяет гораздо меньше «тихих» приведений типов, а некорректная интерпретация типа объекта ведет, в отличие от C++, не к неопределенному поведению (читай, непредсказуемым граблям), а к выбросу исключения.

Не совсем так. Просто в C++ нет булевского типа.  

Это сообщение отредактировал(а) w1nd - 9.5.2006, 01:33


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Void
Дата 9.5.2006, 01:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(w1nd @  9.5.2006,  03:27 Найти цитируемый пост)
Просто в C++ нет булевского типа.

Это вы мне говорите? smile А с Си не путаете? В C++ есть булевский тип (bool), другой вопрос, что вследствие type promotions к нему приводятся почти все элементарные типы…
Цитата(w1nd @  9.5.2006,  03:27 Найти цитируемый пост)
Невозможность же проверки в runtime - это особенности работы с указателями и конкретных компиляторов, а не языка.

Вы не правы. Есть стандарт C++, в котором четко прописаны конструкции и положения, делающие обязательную проверку типов в рантайме невозможной.

Добавлено @ 01:36 
Цитата(sergej.z @  9.5.2006,  03:24 Найти цитируемый пост)
ява-специфичные степени инкапсуляции ("protected"

В C++ присутствует. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
w1nd
Дата 9.5.2006, 05:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата
Вы не правы. Есть стандарт C++, в котором четко прописаны конструкции и положения, делающие обязательную проверку типов в рантайме невозможной.
Я поправился (см. выше)
Цитата
Это вы мне говорите?  А с Си не путаете? В C++ есть булевский тип (bool)
Упс, путаю. Хорошо, в условиях не нужен булевский тип. Все равно не пойму, причем здесь типобезопасность, которой нет.   

Это сообщение отредактировал(а) w1nd - 9.5.2006, 05:37


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
ALKS
Дата 9.5.2006, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



Цитата(sergej.z @ 9.5.2006,  01:24)
[LIST]
С++ - не полностью Обьектно-ориентированный (возможна смесь с Си, #define и прочие извращения) / Java - полностью обьектно-ориентированный. 

Ни C++ ни Java не являются  полностью объектными языками. Полностью объектный язык, это язык, у которого все является объектами, т.е. нет примитивных типов вообще. Кроме того, еще можно смело спорить какой из двух языков предоставляет большие возможности объектно ориентированного программирования.  Попробуйте на Java  самостоятельно написать класс java.lang.String smile это не возможно у String перегружена оперция "+". хе хе. а на С++ вы напишете такое запросто. С++ ые templates это конечно предмет вечной зависти... так что не всё так просто.

Остальные перечисленные пункты тоже верны не доконца и спорны smile.  

Это сообщение отредактировал(а) ALKS - 9.5.2006, 08:44
PM   Вверх
raiskaa
Дата 9.5.2006, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.5.2006

Репутация: нет
Всего: нет



Цитата(w1nd @ 8.5.2006,  21:48)
Открываете Google и пишете запрос: "java and c++ differences". На первой же странице куча ссылок.  

Куча ссылок это хорошо, но там же еще и отличий куча.
 Вопрос стоит какие из них действительно принципиальные, а какие - просто детали.
Мне надо выбрать всего 5.  smile 
Пока зто в списке: 
C++ - машинный код / Java - интерпретируемый код 
 Java- ОО язык, а С++ - гибридный
 Java не позволяет множ. наследования
 Java:  нет указателей
 Java: автоматический сборщик мусора
 Java- типобезопасность
 Java - стандартные библиотеки, 
Java -отсутствие глобальных переменных

 smile  
PM MAIL   Вверх
ALKS
Дата 9.5.2006, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



хы. 
java интерпретируемый код? ну да. правда современная java машина на лету компелирует байт код в нативный для среды где она запущена. так что от классического интерпретатора это довольно далеко лежало.

Java не докoнца OO язык. и что самое не приятно Java это язык со злым "неравеством типов"

Java не позволяет множественное наследование ДЛЯ КЛАССОВ. а в принцепе - позволяет smile. это довольно существенное замечание.

В Java есть указатели. smile В java нету синтаксиса для прямой работы с ними. нет арифметики указателей. но указатели сами по себе есть. В метод передаётся ссылка на объект, а не сам объект. вот почитайте милую статью: http://www.javable.com/columns/robinson/letters/01/

автоматический сборщик мусора... ндя. я бы сказал иначе - в Java отсутсвуют деструкторы. smile сборщик мусора это не особенность языка это особенность среды выполнения.

типобезопасность? ну.... смотря что вы под этим понимаете. поясните пожалуйста.

стандартные библиотеки? а это что: http://en.wikipedia.org/wiki/ISO/IEC_14882 ? Стандартная библиотека C++  стандартна в прямом смысле ибо есть соответсвующий стандарт ISO! Java может пускать слюни smile

отсутсвие глобальных переменных? ну... да пожалуй соглашусь, хотя статические классы еще никто не отменял но признаю это не совсем "то" 
PM   Вверх
sergejzr
Дата 9.5.2006, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(Void @  8.5.2006,  23:35 Найти цитируемый пост)
Добавлено @ 23:36 
Цитата(sergej.z @  9.5.2006,  03:24 Найти цитируемый пост)
ява-специфичные степени инкапсуляции ("protected"

В C++ присутствует. 


Тьфу блин! "package protected" конечно имелся ввиду smile

Цитата(ALKS @  9.5.2006,  06:31 Найти цитируемый пост)
С++ ые templates это конечно предмет вечной зависти... 

В Java есть они smile

Цитата(ALKS @  9.5.2006,  06:31 Найти цитируемый пост)
Ни C++ ни Java не являются  полностью объектными языками.

По крайней мере в Java - приложении присутствует как минимум один обьект. В с++ коде может не быть ни одного smile
Цитата(ALKS @  9.5.2006,  06:31 Найти цитируемый пост)
Полностью объектный язык, это язык, у которого все является объектами, т.е. нет примитивных типов вообще.

На Java можно прогить и не пользуясь прим. типами. Впрочем как и на С++. Здесь разницы большой нет между ними.

Цитата(ALKS @  9.5.2006,  06:31 Найти цитируемый пост)
Остальные перечисленные пункты тоже верны не доконца и спорны

Дык напиши пару тройку своих, тоже поспорим smile

Цитата(raiskaa @  9.5.2006,  07:26 Найти цитируемый пост)
 Java- типобезопасность

Лучше не надо этот пункт брать. В Си++ типобезопастность тоже на высоте.

Цитата(raiskaa @  9.5.2006,  07:26 Найти цитируемый пост)
Java -отсутствие глобальных переменных

И это лучше не брать. В Java есть модификатор static.

Цитата(raiskaa @  9.5.2006,  07:26 Найти цитируемый пост)
Java:  нет указателей

Лучше написать. В Java у программиста нет выбора между работой с указателями, ссылками, или самими обьектами как в С++. В Java определено, что обьекты передаются по ссылке, а данные прим. типа копируются.  


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
ALKS
Дата 9.5.2006, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



sergej.z

 генерикс + автобоксинг это НЕ темплейты. далеко НЕ. хотя формально механизм темплейтов в С++ это уже не объекто ориентированое програмирование это абстрактное программирование - следующий шаг.

есть в Java объект всегда. ок. но это не далает Java полноcтью OO языком. Да, я придераюсь к этому слову: полноcтью. В отношении Java его употреблять нельзя. и не только в простых типах дело. есть и ещё нюансы. И нельзя говорить что С++ менее OO чем Java это не правда. он как раз "более". Единственное что можно сказать: на С++ можно писать полностью НЕ объектный код, а на Java - нет. 

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

Это сообщение отредактировал(а) ALKS - 9.5.2006, 10:38
PM   Вверх
JUncle
Дата 9.5.2006, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(sergej.z @  9.5.2006,  10:19 Найти цитируемый пост)
В Java определено, что обьекты передаются по ссылке, а данные прим. типа копируются.   

Если быть точным, в Java все передается по значению. Да, в случае передачи объекта, параметр метода - это ссылка, но сама ссылка то передается по значению.
То есть, выполнив этот код, вы получите NullPointerException:

Код

    ...
    public void someMethod(String aString) {
        aString = "HelloWorld";
    }
    ...
    public void anotherOneMethod() {
        String ourString = null;
        this.someMethod(ourString);
        System.out.println(ourString.charAt(0));
    }
    ...

А все потому что, ссылка, передаваемая как аргумент в someMethod, передана по значению, и если изменять ее значение внутри метода, ссылка на "верхнем" уровне не изменится. Как она была null, так и останется. Другое дело, если изменить объект, на который указывает эта ссылка.
Таким образом, формально в Java ВСЕ передается по значению.   

Это сообщение отредактировал(а) JUncle - 9.5.2006, 11:43
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
sergejzr
Дата 9.5.2006, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



JUncle, не надо утрировать smile Естесственно в компьютерном мире всё так или иначе передаётся по значению (Спускаясь до машинных инструкций). Таким образом дойдём до того, Что различий между любыми языками не существует, так как всё в конце концов превращается в 0 (включая 1, которая - инвертированный 0). Так можно что угодно упростить smile

Ссылка (или указатель) это абстрактная величина. Обьект передаётся именно по ссылке (которая в свою очередь ессно по значению).  


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LSD
Дата 9.5.2006, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(raiskaa @  9.5.2006,  10:26 Найти цитируемый пост)
Вопрос стоит какие из них действительно принципиальные, а какие - просто детали.
Мне надо выбрать всего 5.   
Пока зто в списке: 
C++ - машинный код / Java - интерпретируемый код 
 Java- ОО язык, а С++ - гибридный
 Java не позволяет множ. наследования
 Java:  нет указателей
 Java: автоматический сборщик мусора
 Java- типобезопасность
 Java - стандартные библиотеки, 
Java -отсутствие глобальных переменных

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

Добавлено @ 12:03 
И еще, товарищи давайте не будем увлекаться религиозными войнами на тему Java vs C++. Для этого есть специальный раздел. 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
ALKS
Дата 9.5.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



LSD это не религиозные войны, потому что вообщем-то никто не спорит что лучше а что хуже smile
Просто патаемся разобраться в различиях, не сваливаясь в диспут какие различия - зло, а какие - благо smile

и вообще дискусия интерсна. вот. 
PM   Вверх
sergejzr
Дата 9.5.2006, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Вообще, как основное отличие надо добавить кроссплатформенность. 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
raiskaa
Дата 9.5.2006, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.5.2006

Репутация: нет
Всего: нет



Цитата(sergej.z @ 9.5.2006,  12:14)
Вообще, как основное отличие надо добавить кроссплатформенность.

А-а-а-а!!! Это что за зверь? smile  
PM MAIL   Вверх
LSD
Дата 9.5.2006, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(raiskaa @  9.5.2006,  13:36 Найти цитируемый пост)
А-а-а-а!!! Это что за зверь?

Программа написанная на Java может быть без переделок, запущена на любой платформе где есть JVM.

На самом деле конечно есть проблемы с переносом, но они не сильно большие если заранее учитывать что программа будет работать на разных платформах. 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sergejzr
Дата 9.5.2006, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата

 smile 


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


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
raiskaa
Дата 9.5.2006, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.5.2006

Репутация: нет
Всего: нет



Вот это про кроссплатформенность?

"The output of a Java compiler is not executable code. Rather it is bytecode. Using bytecode to represent programs is the easiest way to create truly portable programs." 
PM MAIL   Вверх
LSD
Дата 9.5.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(raiskaa @  9.5.2006,  13:54 Найти цитируемый пост)
Вот это про кроссплатформенность?

"The output of a Java compiler is not executable code. Rather it is bytecode. Using bytecode to represent programs is the easiest way to create truly portable programs."

Это объяснение, как она реализована. 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
ALKS
Дата 9.5.2006, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



Цитата(sergej.z @ 9.5.2006,  12:49)
Цитата

 smile 


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

ууу smile ну уж нет. не все так просто. вэб приложение на J2EE вы на мобильнике не запустите. кроме того криво написанное Java приложение не заработает где попало. тут LSD прав. типичный пример - не использование System.getProperty("file.separator") при формировании имен файлов. есть и иные нюансы. кроме того Java приложение вы сможете запустить только на платформе для которой существует JVM и тут встают вопросы о совместимости конкретной JVM со спецификацией и её версией. Но в общем случае обеспечить переносимость приложения на Java на порядок проще, чем приложение на С++.

С другой стороны, не ошибусь если скажу что плактичиски любая платформа имеет компилятор С, но далеко не любая - JVM... 
PM   Вверх
raiskaa
Дата 9.5.2006, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.5.2006

Репутация: нет
Всего: нет



Цитата(raiskaa @ 9.5.2006,  12:54)
Вот это про кроссплатформенность?

"The output of a Java compiler is not executable code. Rather it is bytecode. Using bytecode to represent programs is the easiest way to create truly portable programs."


В таком случае можно ли сказать, что кроссплатформенность это следствие пункта:
C++ - машинный код / Java - интерпретируемый код 
 
PM MAIL   Вверх
powerOn
Дата 9.5.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Кроссплатформенность Java, (уж какая есть  smile ), обеспечивается благодаря первоначальной компиляции программы  в байт код и Интерпретации / JIT компиляции при выполнении.
  

Это сообщение отредактировал(а) MoonCat - 9.5.2006, 13:53


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
sergejzr
Дата 9.5.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(raiskaa @  9.5.2006,  11:47 Найти цитируемый пост)
В таком случае можно ли сказать, что кроссплатформенность это следствие пункта:
C++ - машинный код / Java - интерпретируемый код

Да! Я её там вынес как раз в тот пункт. Просто это зачастую наиболее важный аргумент, который хотят услышать профы smile 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
raiskaa
Дата 9.5.2006, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.5.2006

Репутация: нет
Всего: нет



спасибо, понятно! 
PM MAIL   Вверх
raiskaa
Дата 9.5.2006, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.5.2006

Репутация: нет
Всего: нет



to Sergej.z

Цитата(raiskaa @  9.5.2006,  07:26 Найти цитируемый пост)
Java -отсутствие глобальных переменных

И это лучше не брать. В Java есть модификатор static.

запуталась! А как же вот это:
" All the code in a Java program is encapsulated within one or more classes. Therefore, Java does not have global variables or global functions."

http://www.csupomona.edu/~dlbell/cppexplanationsfa99/23.html
 smile

Добавлено @ 14:25 
[QUOTE=sergej.z,9.5.2006,  10:19]
Цитата(Void @  8.5.2006,  23:35 Найти цитируемый пост)
Добавлено @ 23:36 

Цитата(raiskaa @  9.5.2006,  07:26 Найти цитируемый пост)
Java:  нет указателей

Лучше написать. В Java у программиста нет выбора между работой с указателями, ссылками, или самими обьектами как в С++. В Java определено, что обьекты передаются по ссылке, а данные прим. типа копируются.



"Perhaps the single biggest difference between Java and C++ is that Java does not support pointers. Pointers are inherently insecure and troublesome. Since pointers do not exist in Java, neither does the -> operator. Some other C++ features are not found in Java."
и это оттуда же! Вполне однозначно написано:"Java не поддерживает указатели"
Вот поди разберись! 
PM MAIL   Вверх
ALKS
Дата 9.5.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



smile "->" это операция из С++. как она правильно называеться? блин, совсем С забыл smile
да ничего подобного в Java нету. но это операции с указателями а не сами указатели. т.е. указатели то в Java есть и они неявно испозуються. но вот явного синтаксиса для работы с ними, как в C/C++ - нету. но это всё - большие тонкости... 
PM   Вверх
sergejzr
Дата 9.5.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



raiskaa, это же просто люди писали. Всё зависит от абстрактной позиции, которую занимаешь. 
Естественно программист не найдёт в Ява указателей при программинге. Но всё же они там есть, просто скрыты от нас. Поэтому сказать "Ява не поддерживает указатели" - слишком мало. Не хватает ", но ..."  smile 


Цитата(raiskaa @  9.5.2006,  12:19 Найти цитируемый пост)
Therefore, Java does not have global variables or global functions.

Нет, но есть статические члены/мемберы класса.

Код

class Static
{
public static staticVar;
public static void staticFunc(){}
}


Вот у нас и аналог глобальной переменной и глобальной функции.

  


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
raiskaa
Дата 9.5.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 8.5.2006

Репутация: нет
Всего: нет



Еще раз спасибо, теперь проясняется  smile  
PM MAIL   Вверх
JUncle
Дата 9.5.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(ALKS @  9.5.2006,  13:37 Найти цитируемый пост)
ууу smile ну уж нет. не все так просто. вэб приложение на J2EE вы на мобильнике не запустите. кроме того криво написанное Java приложение не заработает где попало.

Ну - J2EE это не pure java. Это просто набор спецификаций.

Цитата(ALKS @  9.5.2006,  13:37 Найти цитируемый пост)
С другой стороны, не ошибусь если скажу что плактичиски любая платформа имеет компилятор С, но далеко не любая - JVM...  

Это не совсем то - т.к. в общем понимании кроссплатформенность присуща программе, когда ее бинарник не нужно  формировать заново для новой платформы (как в случае с С \ С++).

Цитата(sergej.z @  9.5.2006,  14:53 Найти цитируемый пост)

Код

class Static
{
public static staticVar;
public static void staticFunc(){}
}


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

Это сообщение отредактировал(а) sergej.z - 9.5.2006, 17:56
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
sergejzr
Дата 9.5.2006, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(JUncle @  9.5.2006,  15:41 Найти цитируемый пост)
Следуя хорошему тону, static поля вообще то должны быть финальными (final)

Вообще-то Ява не запрещает их делать не final. Для этого есть хорошие причины, например private static абсолютно не противоречит "хорошему" тону (взять хотя бы тот же синглтон из Вашей подписи smile ). 
Кстати насчёт "хорошего" тона или "плохой" архитектуры  smile  - это на 99% процентов зависит от поставленной задачи и её условий, но так как мы обсуждаем отличия от С++, это к делу не относится.
  


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
JUncle
Дата 9.5.2006, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(sergej.z @  9.5.2006,  17:53 Найти цитируемый пост)
Вообще-то Ява не запрещает их делать не final. Для этого есть хорошие причины, например private static абсолютно не противоречит "хорошему" тону (взять хотя бы тот же синглтон из Вашей подписи smile ). 

Если бы Java запрещала что-то, то об этом не было бы и речи  smile
А в случае private полей, действительно, разговор другой, но и о глобальных переменных тогда тоже речи не идет. 

А насчет отношения Java и C++ к ООП -
С++ не может быть "более-ООП" языком, т.к. на нем все-таки можно написать действующую не-ООП программу.
С другой стороны, на Java можно тоже написать программу, с точки здравого смысла абсолютно не ООП. Однако формально она все-таки будет ООП программой (если не принимать во внимание примитивы).
Кстати, читал, что назвать Java ООП языком не позволяет, кроме примитивов и еще один факт. Объекты должны общаться посредством сообщений, а методы Java это несколько другое. 

Цитата(sergej.z @  9.5.2006,  17:53 Найти цитируемый пост)
Кстати насчёт "хорошего" тона или "плохой" архитектуры  smile  - это на 99% процентов зависит от поставленной задачи и её условий, но так как мы обсуждаем отличия от С++, это к делу не относится.

Ну что ж, кроме цифры 99, вообще согласен smile Хорошо, не будем об этом. 

Это сообщение отредактировал(а) JUncle - 9.5.2006, 18:06
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
ALKS
Дата 9.5.2006, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



Цитата(JUncle @ 9.5.2006,  17:41)

Цитата(ALKS @  9.5.2006,  13:37 Найти цитируемый пост)
ууу smile ну уж нет. не все так просто. вэб приложение на J2EE вы на мобильнике не запустите. кроме того криво написанное Java приложение не заработает где попало.

Ну - J2EE это не pure java. Это просто набор спецификаций.

Согласен J2EE - плохой пример. я не сталкивался с J2ME вообще, к сожалению. Но разве J2SE программа написанная, для простоты, в рамках любых классов из трех основных пакетов - lang, io и util пойдет без всяких ограничений в рамках J2ME?

Цитата(JUncle @ 9.5.2006,  17:41)

Цитата(ALKS @  9.5.2006,  13:37 Найти цитируемый пост)
С другой стороны, не ошибусь если скажу что плактичиски любая платформа имеет компилятор С, но далеко не любая - JVM...  

Это не совсем то - т.к. в общем понимании кроссплатформенность присуща программе, когда ее бинарник не нужно  формировать заново для новой платформы (как в случае с С \ С++).

с определением кросплотформенности не соглашусь. мне намного более правильным кажется примерно следующее:
"Кросс-платформенным следует называть проект, перенос которого на новые платформы может быть выполнен с минимальными затратами. принебрежительно малыми, по сравнению с затратами на собственно разработку самого проекта." © не я 
PM   Вверх
JUncle
Дата 9.5.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(ALKS @  9.5.2006,  18:10 Найти цитируемый пост)
Согласен J2EE - плохой пример. я не сталкивался с J2ME вообще, к сожалению. Но разве J2SE программа написанная, для простоты, в рамках любых классов из трех основных пакетов - lang, io и util пойдет без всяких ограничений в рамках J2ME?

Да, я это забыл отметить, действительно, есть некоторые ограничения. В т.ч и обратные - т.е. в случае J2ME программы на J2SE JVM,

Цитата(ALKS @  9.5.2006,  18:10 Найти цитируемый пост)
с определением кросплотформенности не соглашусь. мне намного более правильным кажется примерно следующее:
"Кросс-платформенным следует называть проект, перенос которого на новые платформы может быть выполнен с минимальными затратами. принебрежительно малыми, по сравнению с затратами на собственно разработку самого проекта." © не я  

Ну может быть... Однако один из самых широких классов - GUI программы - в случае с С++ кросплатформенными никак назвать нельзя.

И если допустить, что С++ программы кроссплатформенны, получается, что Java программы более кроссплатформенны, т.к. для их переноса на другую платформу в общем случае требуется меньше затрат* -  мб ввести такую величину как коэффициент кроссплатформенности? smile  

* - при условии что на платформе етсь JVM
Однако в случаее с С++ для платформы так же должен существовать компилятор. Так что тут они в равных условиях. 

Это сообщение отредактировал(а) JUncle - 9.5.2006, 18:21
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
w1nd
Дата 9.5.2006, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата
С++ не может быть "более-ООП" языком, т.к. на нем все-таки можно написать действующую не-ООП программу.

С++ безусловно "более-ООП" язык, так как на нем в отличие от Java можно не извращаясь создать полностью ООП-программу.

Цитата
Объекты должны общаться посредством сообщений

Это не так, не следует воспринимать буквально слова о сообщениях.
 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
sergejzr
Дата 9.5.2006, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(ALKS @  9.5.2006,  16:10 Найти цитируемый пост)
"Кросс-платформенным следует называть проект, перенос которого на новые платформы может быть выполнен с минимальными затратами. принебрежительно малыми, по сравнению с затратами на собственно разработку самого проекта." © не я  

Хм.. Только это к языку и философии программинга мало относится. Можно проект на асме написать, который без проблем скомпилится на любой платформе. Но Асм назвать кроссплатформенным думаю ни у кого язык не повернётся smile

А на Яве кроссплатформенный именно бинарник, а не "проект". Что само по себе, кроме этого удобстава несёт ещё и удобства контроля и управления проектом (который не надо пичкать if else #ifdef _WIN32 итд.) Один исходник, один бинарник. Это в рамках большого проекта экономит тысячи долларов (говорю для того чтобы немного расшевелить вышеприведённое определение). Каждый, кто несколько лет занимался разработкой кроссплатформенных проектов на Си и Си++ меня поймут  smile   smile  


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
JUncle
Дата 9.5.2006, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(w1nd @  9.5.2006,  18:20 Найти цитируемый пост)
С++ безусловно "более-ООП" язык, так как на нем в отличие от Java можно не извращаясь создать полностью ООП-программу.

А можно подробнее?


Цитата(w1nd @  9.5.2006,  18:20 Найти цитируемый пост)
Это не так, не следует воспринимать буквально слова о сообщениях.

За что купил, за то и продал. smile 
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
sergejzr
Дата 9.5.2006, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(w1nd @  9.5.2006,  16:20 Найти цитируемый пост)
С++ безусловно "более-ООП" язык, так как на нем в отличие от Java можно не извращаясь создать полностью ООП-программу.


Код

class OOProgramm
{
public static void main(String[] argv)
{
 System.out.println("Hello world!");
}

}


Полностью ОО - программа без извращений smile 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
w1nd
Дата 9.5.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата
Полностью ОО - программа без извращений

Не вижу ничего, что указывало бы на объектно-ориентированность. Конструкция языка "класс" имеет к ОО весьма опосредованное отношение.

Добавлено @ 18:48 
Я вообще не понимаю разговоров о "некроссплатформенности" Java. Один из аргументов - разница в наборе классов RT; другой - разные JVM, на которых один и тот же код может выполняться по-разному; третий - не везде есть JVM. Все эти утверждения несостоятельны: байт-код исполняется одинаково везде. Если в в JVM для утюга отсутствуют классы для работы с дисплеем или в какой-то реализации JVM попросту наделано ошибок, то это никак не относится к вопросу о кроссплатформенности. Если для платформы X нет JVM - никто не мешает её написать. 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
sergejzr
Дата 9.5.2006, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



В таком случае напишите пожалуйста полностью ООПрограмму на С++ (Ну или "более" ООПрограмму) smile

Цитата(w1nd @  9.5.2006,  16:45 Найти цитируемый пост)
Если для платформы X нет JVM - никто не мешает её написать.  

Добавлю, что кроссплатформенность заканчивается там, где заканчиваются платтформы, на которые разработчику следует ориентироваться. А нормальные JVM есть для линя, винды, соляриса. Это наверняка покрывает бОльшую часть необходимых.
   


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
S.A.P.
Дата 9.5.2006, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



Java - кодеры, дайте пожалуйста точное определение кроссплатформенности, чтобы знать с какой точки начать обсуждение. 
PM MAIL   Вверх
w1nd
Дата 9.5.2006, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(S.A.P. @ 9.5.2006,  19:39)
Java - кодеры, дайте пожалуйста точное определение кроссплатформенности, чтобы знать с какой точки начать обсуждение.

Для java: перенос с платформы на платформу без изменений. 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
sergejzr
Дата 9.5.2006, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(w1nd @  9.5.2006,  17:49 Найти цитируемый пост)
Для java: перенос с платформы на платформу без изменений.  

Перенос чего? Кода? Бинарника? Проекта? 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
cromm3
Дата 9.5.2006, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 22.3.2006

Репутация: нет
Всего: нет



Цитата

Вместо примера кода классический пример из книжек: класс Point, класс Size обладают некоторыми полями и методами, класс Square их наследник и в то же время и Point, и Size. К сожалению, на Java этого номально не сделать. Так же нельзя сделать гуишный компонент для ввода строки наследником строки.


Не честноsmile
Это множественное наследование… в Java оно реализуется(частично) через implements… а вообще по Эккелю Java более чистокровный ОО язык.
И еще, на Java можно реализовать аспектно-орентированный подход в программировании, в C++ это сделать трудней… 
PM   Вверх
w1nd
Дата 9.5.2006, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(sergej.z @ 9.5.2006,  19:58)
Цитата(w1nd @  9.5.2006,  17:49 Найти цитируемый пост)
Для java: перенос с платформы на платформу без изменений.  

Перенос чего? Кода? Бинарника? Проекта?

Разумеется, конечного программного продукта. Бинарника, то бишь.

Добавлено @ 20:20 
Цитата
Не честно
Это множественное наследование… в Java оно реализуется(частично) через implements…

Почему не честно? А реализовывать один и тот же метод на страницу текста в пяти-десяти-сотне классов вместо одного это честно и удобно? Или то, что класс, обладающий координатами к координатам откастить нельзя - это апогей ООП?
Цитата
а вообще по Эккелю Java более чистокровный ОО язык.

Чистокровный? Ну уж ерунды-то не говорите. Да и кто такой Эккель? Это что за авторитет такой? 
Цитата
И еще, на Java можно реализовать аспектно-орентированный подход в программировании, в C++ это сделать трудней… 

Да, в C++ это делать несколько трудней, но ничто не мешает. 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
ALKS
Дата 9.5.2006, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



[QUOTE=sergej.z,9.5.2006,  18:23]
Цитата(ALKS @  9.5.2006,  16:10 Найти цитируемый пост)

Хм.. Только это к языку и философии программинга мало относится. Можно проект на асме написать, который без проблем скомпилится на любой платформе. Но Асм назвать кроссплатформенным думаю ни у кого язык не повернётся smile

А на Яве кроссплатформенный именно бинарник, а не "проект". Что само по себе, кроме этого удобстава несёт ещё и удобства контроля и управления проектом (который не надо пичкать if else #ifdef _WIN32 итд.) Один исходник, один бинарник. Это в рамках большого проекта экономит тысячи долларов (говорю для того чтобы немного расшевелить вышеприведённое определение). Каждый, кто несколько лет занимался разработкой кроссплатформенных проектов на Си и Си++ меня поймут  smile   smile

Про ASM это ты ляпнул! smile стоимость портирования ASM приложения на другую процессорную архитектуру равна как минимум стоимости разработки проекта с нуля smile напиши прогу на асме и пропартируй на x86, Motorolla, Z80 и мой любый мэинфрейм DEC smile - убедишся сам. В истории софта, самая-самая "много на ASM" система была Novell Netware 2.x. Они говрили что она написана на ASM на 30% (невероятно много!!! ). история помнит что установка этой OS, была настолько сложным делом что возникли 100-ни контор в этом помогающие... а дело в том что там было необходимо фактически компилировать OS под каждый конкретный сервер... smile

Ну а про Java никто не спорит, да сравнительно очень просто, да экономит массу денег.Нo не то чтобы совсем без усилий и проблем.

Для меня "более" объектен тот язык который предоставляет мне больше эээ... ОО-возможностей. С++ есть множесетвенное наследование классов, перегрузка операций, шаблоны. да можно спорить о том хороший ли скажем стиль - активно применять множественное наследование в глубоких иерархиях и т.д и т.п. но эта возможность в С++ есть, а в java - нет. Есть масса примеров когда грамотное применение множественного наследования действительно порождает изящество и помогает избежать маштабного дублировнаия кода. множественное наследование интерфейсов и внутринние классы зглаживают, но не заменяют.

перегрузка операций это что-то отсутсвие чегов Java  меня злит постоянно.... я искренне не понимаю почему её не возможно реализовать хотябы на уровне компилятора. ээххх каждый раз  когда я работаю с JDBC вспоминаеться объектно орриентированная С++ библиотека для работы с сервером SQLBase... они перегрузили только 2 операции а 10-ки строк кода тупых сэтов и гетов просто ушли... 
PM   Вверх
Бонифаций
Дата 9.5.2006, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



На мой взгляд самое принципиальное различие - java требует чтобы программист обрабатывал ошибки.
То есть если вы к примеру из программы открываете файл, java на стадии компиляции будет проверять налилче обработчика IOException. Если ее нет - класс просто не скомпилируется. 


другое принципиальное отличие - совершенно другая работа с памятью. Наличие в языке (а не отдельной бибкой) сборщика мусора

И наконец третье важное отличие явы - конструкция finally {} после try, которая гарантированно выполняется независимо от того, были exceptions или нет.  Этот finally очень облегчает работу с ресурсами и уменьшает количество ошибок.

  

Это сообщение отредактировал(а) Бонифаций - 9.5.2006, 21:48


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
w1nd
Дата 9.5.2006, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата
На мой взгляд самое принципиальное различие - java требует чтобы программист обрабатывал ошибки.
То есть если вы к примеру открываете файл, java на стадии компиляции будет проверять обработку IOException. Если ее нет - класс просто не скомпилируется. 

Что вы говорите? А как же быть с тем, что когда исключения появились в C++, Java была только в проекте?
Цитата
другое принципиальное отличие - совершенно другая работа с памятью. GC и все такое

Ничто не мешает реализовать GC в программе на C++. GC - это мимо кассы однозначно.   

Это сообщение отредактировал(а) w1nd - 9.5.2006, 21:48


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
cromm3
Дата 9.5.2006, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 22.3.2006

Репутация: нет
Всего: нет



Цитата

А реализовывать один и тот же метод на страницу текста в пяти-десяти-сотне классов вместо одного это честно и удобно? Или то, что класс, обладающий координатами к координатам откастить нельзя - это апогей ООП?

Хм… ну в таком случаи нужно сравнивать С++ с С# там тоже убрали множественное наследование в чистом виде… C# это ж не отход от принципов ООП а, как предполагается, их развитие… 
PM   Вверх
Бонифаций
Дата 9.5.2006, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Цитата(w1nd @  9.5.2006,  21:45 Найти цитируемый пост)
Что вы говорите? А как же быть с тем, что когда исключения появились в C++, Java была только в проекте?


ключевые слова "требует" и "позволяет" - тут есть разница.  


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
JUncle
Дата 9.5.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(ALKS @  9.5.2006,  21:25 Найти цитируемый пост)
перегрузка операций это что-то отсутсвие чегов Java  меня злит постоянно.... я искренне не понимаю почему её не возможно реализовать хотябы на уровне компилятора. ээххх каждый раз  когда я работаю с JDBC вспоминаеться объектно орриентированная С++ библиотека для работы с сервером SQLBase... они перегрузили только 2 операции а 10-ки строк кода тупых сэтов и гетов просто ушли... 

Если время дорого, имеет смысл подумать о применении фреймворков. И почему геты и сеты тупые? Это же часть технологии JavaBeans, играющей не последнюю роль в вышеупомянутых фреймворках (сериализация объектов в РБД и пр...)  

Это сообщение отредактировал(а) JUncle - 9.5.2006, 21:52
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
Бонифаций
Дата 9.5.2006, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Цитата(w1nd @  9.5.2006,  21:45 Найти цитируемый пост)
Ничто не мешает реализовать GC в программе на C++. GC - это мимо кассы однозначно.   


... и его будут испрользовать только те части программы на С, которые о нем знают . А все остальные сишные бибки - так и будут работать с памятью по старому. И в чем тут радость? проходили - знаем, пробовали boehm GC 


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
w1nd
Дата 9.5.2006, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(Бонифаций @ 9.5.2006,  21:50)
ключевые слова "требует" и "позволяет" - тут есть разница.

Нет уж позвольте. В Java работа с иключениями приниципиально ничем не отличается от того, что есть в C++. Компилятор C++ точно так же будет требовать кода обработки. 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
JUncle
Дата 9.5.2006, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



В С++ есть контролируемые исключения, простите?! 
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
w1nd
Дата 9.5.2006, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(Бонифаций @ 9.5.2006,  21:53)
... и его будут испрользовать только те части программы на С, которые о нем знают . А все остальные сишные бибки - так и будут работать с памятью по старому. И в чем тут радость? проходили - знаем, пробовали boehm GC

ANSI-шные - все. А как вам работа с системными библиотеками из Java? Они ведь тоже не знают про GC и не могут его использовать.

Добавлено @ 22:02 
Цитата(JUncle @ 9.5.2006,  21:56)
В С++ есть контролируемые исключения, простите?!

Так вот вы о чем smile Да, нет различий. Но будет ли компилироваться такой код - вопрос настройки компилятора.  Единственное отличие (и оно проистекает изтого, что в Java бинарник - это не машинный код) - это информация о исключениях в сигнатурах методов. 

Это сообщение отредактировал(а) w1nd - 9.5.2006, 22:07


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
JUncle
Дата 9.5.2006, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Какого именно? javac или сишного? 
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
w1nd
Дата 9.5.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(JUncle @ 9.5.2006,  22:03)
Какого именно? javac или сишного?

Сишного. 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Бонифаций
Дата 9.5.2006, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Цитата(w1nd @  9.5.2006,  21:54 Найти цитируемый пост)
В Java работа с иключениями приниципиально ничем не отличается от того, что есть в C++. Компилятор C++ точно так же будет требовать кода обработки.  


Ох!

Вот вам простой пример:
Код

#include <iostream>
using namespace std;

int main(){
 throw 5;
 cout << "привет мы тут";

}


Компилируется без проблем

Код

class Ax {

 public static void main (String[] argv)
 {
   throw new Exception("Эй!");
   System.out.println ("мы тут");
 }
}

Выдает
Ax.java:6: unreachable statement
   System.out.println ("мы тут");
   ^
Ax.java:5: unreported exception java.lang.Exception; must be caught or declared to be thrown
   throw new Exception("Эй!");
   ^
2 errors

 Чувствуете разницу? 

Это сообщение отредактировал(а) Бонифаций - 9.5.2006, 22:11


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
jxr
Дата 9.5.2006, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 338
Регистрация: 31.7.2005

Репутация: нет
Всего: нет



Цитата(w1nd @ 9.5.2006,  00:01)
Цитата(jxr @ 8.5.2006,  23:26)
a)
C++ code - ANSI code.
Java code - Unicode code.

b)
C++, int x;  if( x ) block1; else block2;
Java, boolean con; if( con ) block1; else block2;

Первый пункт - неверно, второй - явно далекое от основных отличие.

слово "Компьютер" - может быть идентификатором в JAVA.
в С/C++ не может быть.[традиционно smile ] 
  

Это сообщение отредактировал(а) jxr - 9.5.2006, 22:14
PM MAIL   Вверх
w1nd
Дата 9.5.2006, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата
Ох!

А зачем, как вы думаете, сишный метод может быть дополнен конструкцией throw(...)? Кроме того, любой может также написать компилятор java, который не будет ругаться на необработанные исключения.    

Это сообщение отредактировал(а) w1nd - 9.5.2006, 22:22


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Бонифаций
Дата 9.5.2006, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Цитата(w1nd @  9.5.2006,  21:45 Найти цитируемый пост)
Ничто не мешает реализовать GC в программе на C++. GC - это мимо кассы однозначно.   


давайте реально,
-  какой процент Ваших C/C++ проектов используют Garbage Collecting для памяти?
- какой процент C/C++ проектов  ваших друзей или других вам известных программистов используют Garbage Collecting?

то что в яве это сделали - это большой шаг вперед относительно C++

Добавлено @ 22:27 
Цитата(w1nd @  9.5.2006,  22:20 Найти цитируемый пост)
Кроме того, любой может также написать компилятор java, который не будет ругаться на необработанные исключения.    


вы это серьезно?  smile  


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
w1nd
Дата 9.5.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(Бонифаций @ 9.5.2006,  22:24)
Цитата(w1nd @  9.5.2006,  21:45 Найти цитируемый пост)
Ничто не мешает реализовать GC в программе на C++. GC - это мимо кассы однозначно.   


давайте реально,
-  какой процент Ваших C/C++ проектов используют Garbage Collecting для памяти?
- какой процент C/C++ проектов  ваших друзей или других вам известных программистов используют Garbage Collecting?

то что в яве это сделали - это большой шаг вперед относительно C++

Один. Написан восемь лет назад в целях закрепления знаний smile 

Речь не об этом. GC - это специфицированная фича JVM, а не особенность языка. И считать это различием, на мой взгляд, не стоит. А то так мы доберемся до стравнения IDE для Java и C++. Также, думаю, не стоит принципиальным различием считать поведение компиляторов, разные названия одних и тех же языковых конструкций и прочая, и прочая.  

Цитата
вы это серьезно?  smile

А как же? Байт код известен, тулзами вроде "компиляторов компиляторов" хоть пруд пруди.

 

Это сообщение отредактировал(а) w1nd - 9.5.2006, 22:34


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
Бонифаций
Дата 9.5.2006, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Цитата(w1nd @  9.5.2006,  22:20 Найти цитируемый пост)
А зачем, как вы думаете, сишный метод может быть дополнен конструкцией throw(...)? К


для того чтобы сказать компилеру какие именно exceptions может выбрасывать эта  функция. Однако это не значит, что компилер будет требовать обработки этого exceptions. Вы можете ничего вообще не ловить ни  в этой функции, ни выше ее. Просто все остальные exceptions внутри этой  функции вызовут abort программы. И вы узнаете во время выполнения. 

А в яве - на стадии компиляции.

Добавлено @ 22:44 
Цитата(w1nd @  9.5.2006,  22:32 Найти цитируемый пост)
GC - это специфицированная фича JVM, а не особенность языка. 


неправда. жаба спроектирована под интенсивное использование gc
 


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
Void
Дата 9.5.2006, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Бонифаций, по поводу finally: в C++ есть RAII, который его с успехом заменяет. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Бонифаций
Дата 9.5.2006, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40




Цитата(w1nd @  9.5.2006,  22:20 Найти цитируемый пост)
Кроме того, любой может также написать компилятор java, который не будет ругаться на необработанные исключения.    


Цитата(w1nd @  9.5.2006,  22:32 Найти цитируемый пост)
Цитата
вы это серьезно?  smile

А как же? Байт код известен, тулзами вроде "компиляторов компиляторов" хоть пруд пруди.


Нет не о том речь. То что эти проверки будут выполняться во время компиляции - записано в spec жабы. (   11.2 Compile-Time Checking of Exceptions) Так что если кто-то это не реализует в своем трансляторе - это будет его ошибка. 
 


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
LSD
Дата 9.5.2006, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538




 ! 
LSD
Я же просил не разводить здесь религиозных войн Java vs C++. Если хотите продолжить скажите мне, я разделю тему и закину ее в религиозные войны.
Вопрос звучал, в чем отличия, а не что лучше/хуже. Тот кто продолжит holy wars, получит читательский билет на 2 недели.

 


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Бонифаций
Дата 9.5.2006, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: 1
Всего: 40



Цитата(Void @  9.5.2006,  22:50 Найти цитируемый пост)
по поводу finally: в C++ есть RAII, который его с успехом заменяет.  


Правильно.  Речь идет о разнице между java и c++ - вот я и говорю - в жабе есть finally, который гораздо удобней. Потому что в C++ при использовании raii - надо инкапулировать ресурсы в обьекты, что требует дополнительной работы программиста (например если вы используете какие-то C функции, ну, скажем mysql api для доступа к базе данных) 


упс, пока писал - появилось грозное предупреждение модератора. все. умолкаю 

Это сообщение отредактировал(а) Бонифаций - 9.5.2006, 23:03


--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
w1nd
Дата 9.5.2006, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата
Вопрос звучал, в чем отличия, а не что лучше/хуже.

Так за это и война - что считать принципиальным отличием, а что нет. Ну да ладно, думаю, автор темы уже давно разобрался что к чему smile  


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
JUncle
Дата 9.5.2006, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Вот в принципе, в ходе обсуждения и нашли еще одно отличие - в Java, в отличии от С++, есть контролируемые исключения, которые обязательно ловить или передавать на более "верхний" уровень. 
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
ALKS
Дата 10.5.2006, 02:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



а кстати да! механизм исключений в Java существенно отличаеться и по моему личному мнению лучше того что есть в С++ (но к ООП это отношения прямого не имеет. smile )
Кстати если кому-то интересно: http://www.digitalmars.com/d/ очень очень люботный язык. smile к вопросу того что можно сделать из С если подойти с умом.

И еще господа, помните что С++ (не говоря о С) это достаточно старый язык. и все современные деалекты учитывали опыт разработки огромного количества софта на нем. Создатели Java это С/С++ гуру, естественно они учитывали недостатки С++ и стремились от них избавиться. так что Java и С++ сравнивать несколько не корректно...   

Это сообщение отредактировал(а) ALKS - 10.5.2006, 08:16
PM   Вверх
jimur
Дата 10.5.2006, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 21.4.2006

Репутация: 2
Всего: 3



 В Java есть Reflection 
PM MAIL   Вверх
ALKS
Дата 10.5.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



Цитата(jimur @ 10.5.2006,  11:09)
В Java есть Reflection

это следствие того, что Java всё-таки имеет интерпретаторную природу smile 
PM   Вверх
jimur
Дата 10.5.2006, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 21.4.2006

Репутация: 2
Всего: 3



Цитата(ALKS @  10.5.2006,  11:13 Найти цитируемый пост)
это следствие того, что Java всё-таки имеет интерпретаторную природу smile  

Согласен, но точки зрения плюсов важнее не причина, а следствия наличия Reflection.
Например, аналог Spring Framework на С++ сделать намного сложнее|невозможно. 
PM MAIL   Вверх
ALKS
Дата 10.5.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



ну Reflection это вещ довольно опасная. во-первых Reflection поощряет не объекто-ориентированное программирование особенно в связке с анатациями  (и мой любимый JUnit 4 яркий тому пример smile ). во-вторых Reflection, по понятным причинам, работает не быстро. так что увлекаться не стоит. вообщем, по моему мнению, применять надо осторожно и обдуманно smile  
PM   Вверх
jimur
Дата 10.5.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 21.4.2006

Репутация: 2
Всего: 3



Цитата(ALKS @  10.5.2006,  13:05 Найти цитируемый пост)
во-вторых Reflection, по понятным причинам, работает не быстро. так что увлекаться не стоит. вообщем, по моему мнению, применять надо осторожно и обдуманно smile 

Согласен, обдумывать применение технологий вообще полезно smile
Но для большинства приложений, где есть работа с базой стоимость вызова через Reflection ~1/1000 ms некритична. 
PM MAIL   Вверх
ALKS
Дата 10.5.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



Цитата(jimur @ 10.5.2006,  13:27)
Цитата(ALKS @  10.5.2006,  13:05 Найти цитируемый пост)
во-вторых Reflection, по понятным причинам, работает не быстро. так что увлекаться не стоит. вообщем, по моему мнению, применять надо осторожно и обдуманно smile 

Согласен, обдумывать применение технологий вообще полезно smile
Но для большинства приложений, где есть работа с базой стоимость вызова через Reflection ~1/1000 ms некритична.

откуда такая цифра? 
PM   Вверх
jimur
Дата 10.5.2006, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 21.4.2006

Репутация: 2
Всего: 3



Цитата(ALKS @  10.5.2006,  13:30 Найти цитируемый пост)
откуда такая цифра?  

Код

public class RefTest extends TestCase {
    public void testRefPerfomance() throws Exception {
        long st = System.currentTimeMillis();
        Clock clock = new Clock();
        for (int i = 0; i < 1000000; i++) {
            clock.getTime();
        }
        System.out.println("Processing time is " + (System.currentTimeMillis() -st) + " ms");

        st = System.currentTimeMillis();
        clock = new Clock();
        Method getTimeMethod = clock.getClass().getMethod("getTime");
        for (int i = 0; i < 1000000; i++) {
            getTimeMethod.invoke(clock);
        }
        System.out.println("Processing time is " + (System.currentTimeMillis() -st) + " ms");
    }
}

class Clock {
    public long getTime() {
        return System.currentTimeMillis();
    }
}
 
PM MAIL   Вверх
ALKS
Дата 10.5.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



Цитата(w1nd @ 9.5.2006,  23:30)
Цитата
Вопрос звучал, в чем отличия, а не что лучше/хуже.

Так за это и война - что считать принципиальным отличием, а что нет. Ну да ладно, думаю, автор темы уже давно разобрался что к чему smile

А я вот напротив запутался. smile Предполагая, что никто не возражает, суммирую то к чему пришли:

1. Java, суть интерпретатор. Как следствие в наличии имеется мехазм Dynamic class loading & method invocation ака Reflection, в С++ этого нет, а это очень мощная и крайне полезная вещ. Так же интерпретируемая сущность обеспечивает очень легкую  переносимоть(чтобы под этим не понималось) программ на Java между различными платформами.

2. С++ и Java имееют кординальные отличия в области OПП. 
2.1.С++  поддерживает Classes multiple Inheritance и Operator overloading, а Java - нет. 
2.2.В свою очередь Java поддерживает Inner (adaptor) classes, чего нету в С++. 
2.3. Есть ряд других, менее заметных отличий, например: 
"ява-специфичные степени инкапсуляции, например package protected" © sergej.z 
"В Java все классы наследуются от Object, а в С++ класс может не иметь  суперкласс. " © MoonCat
Добавлено по яростному требованию общественности:
2.4. Явный синтаксис для интерфейсов в Java: "Интерфейсы - одно из главных достижений Java, тк представляют собой иной ООП концепт - отделение набора операций (интерфейса) от имплементации, "чистый" полиморфизм. Наследование класса же - это еще и наследование имплементации и инкапсуляция." © Domestic Cat

3. Cущественные отличия в механизме отлова исключений:  
3.1. "в Java, в отличии от С++, есть контролируемые исключения, которые обязательно ловить или передавать на более "верхний" уровень. " © JUncle
3.2. "RAII cannot generally be used with languages that clean up objects using an unpredictable garbage collection, such as Java" © http://www.hackcraft.net/raii/

4. Generic Programming ака Generics. В Java в каком-то виде это появилось только в последней версии 1.5 . В С++ это развито намного сильнее. (Кому интересно: http://www.digitalmars.com/d/comparison.html есть там и табличка сравнивающая Generic Programming )

5. В Java принципиально отсутсвуют механизмы и синтаксис для прямой работы с указателями. т.е. указатели в недрах языка есть и даже есть примеры их неявного использования (объект переданный в метод), но нету типа "указатель" и нету никакой возможности работать со ссылками напрямую. в С++ - ради Бога  smile

6. "Java спроектирована под интенсивное использование Garbage Collection" © Бонифаций. Это существенное замечание. (Я бы сказал что Java спроектирована так что бы работать ТОЛЬКО и ИСКЛЮЧИТЛЬНО с Garbage Collection, но не суть). Как следствие в Java отсутсвует понятие метода-деструктора. В С++ использование Garbage Collection возможно, но "могу использовать, а могу и нет" и "не могу не использовать" это две большие разницы.


Ничего не забыл?   

Это сообщение отредактировал(а) ALKS - 11.5.2006, 08:41
PM   Вверх
Domestic Cat
Дата 10.5.2006, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(ALKS @  10.5.2006,  07:23 Найти цитируемый пост)
2. С++ и Java имееют кординальные отличия в области OПП. С++  поддерживает Classes multiple Inheritance и Operator overloading, а Java - нет. В свою очередь Java поддерживает Inner (adaptor) classes, чего нету в С++. Есть и ряд других, менее заметных отличий, например: "ява-специфичные степени инкапсуляции, например package protected" © sergej.z

Нужно добавить также интерфейсы, их нет в С++.

Еще
1. В Java нет структур
2. Нет препроцессора 


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

PM   Вверх
ALKS
Дата 10.5.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11




1. интерфейсы - не согласен. полностью абстрактный и public класс без свойств суть интерфейс. то что в С++ нет специального ключевого слова (а кстати в поcледних стандартах деж есть уже, кажется) не принципиально. Кроме того(если мне не изменяет память) в С++ можно наследовтаь классы от структур и структуры могут иметь методы но в структурах всё public - вот вам и интерфейс. smile

2. Нет препроцессора. Ну механизм анотаций (уровня исходного кода) в связке с утилитой ant в Java 1.5 вообще-то позволяет вам создать препроцессор в каком-то виде. Кроме-того препросессор главныи образом используеться как раз для обеспечения кросс платформенности. так что его наличие для Java имеет довольно мало смысла в силу тотальной нативной переносимости.

3. ну а что такого ценного в структуре? структура может быть описана в ввиде класса. что тут существенно? некоторое удобство? - возможно. настолько ли это важное отличие? - не думаю. 
PM   Вверх
powerOn
Дата 10.5.2006, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата

3. ну а что такого ценного в структуре? структура может быть описана в ввиде класса. что тут существенно? некоторое удобство? - возможно. настолько ли это важное отличие? - не думаю. 


Структура - это конструкция языка, такая же как класс или интерфейс. С каждой конструкцией есть определенные правила работы. Отличие языков, в том что один обладает одними конструкциями, а другой другими... 
 Нужно смотреть на различия , а не подгонять возможности... 

В Java все классы наследуются от Object, а в С++ класс может не иметь  суперкласс. 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
sergejzr
Дата 10.5.2006, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(ALKS @  10.5.2006,  15:05 Найти цитируемый пост)
интерфейсы - не согласен. полностью абстрактный и public класс без свойств суть интерфейс. 

О, нет! Как то раз реализовывали подобное интерфейсам на С++ с абстрактными классами. Там морока ещё та. Это нельзя сравнивать! 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
ALKS
Дата 10.5.2006, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



MoonCat, по-поводу Object, как и говорилось - относим в существенные отличия ООП. их много, самые глобальные я упомянул, перечеслять всё... долго и не очень принципиально. smile

Структуры в С++ это уже давно классы. я все равно искренне не понимаю что в них особенного чтобы заострять на них внимание.
привидите мне пример их прелести и язящества, если можно smile  


Ребят, интерфейсы введены в язык Java галвным образом для того, чтобы явно поддержать их множественное наследование на уровне специального синтаксиса. нету в них ничего существенного. немного более удобно и проще абстрактного класса. но отсутсвие этого ключевого слова не являеться существенным отличием - относим в "в существенные отличия ООП" smile

чуть позже внезу в оригинальный пост чтоб общественность не сгрызла ))) 

Это сообщение отредактировал(а) ALKS - 10.5.2006, 17:26
PM   Вверх
Domestic Cat
Дата 10.5.2006, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(ALKS @  10.5.2006,  08:05 Найти цитируемый пост)
1. интерфейсы - не согласен. полностью абстрактный и public класс без свойств суть интерфейс. то что в С++ нет специального ключевого слова (а кстати в поcледних стандартах деж есть уже, кажется) не принципиально. 

Pure abstract класс не есть интерфейс, тк может содержать и неабстрактные методы. 
Цитата(ALKS @  10.5.2006,  08:23 Найти цитируемый пост)
Ребят, интерфейсы введены в язык Java галвным образом для того, чтобы явно поддержать их множественное наследование на уровне специального синтаксиса. нету в них ничего существенного. немного более удобно и проще абстрактного класса. но отсутсвие этого ключевого слова не являеться существенным отличием - относим в "в существенные отличия ООП" smile

Интерфейсы - одно из главных достижений Java, тк представляют собой иной ООП концепт - отделение набора операций (интерфейса) от имплементации, "чистый" полиморфизм. Наследование класса же - это еще и наследование имплементации и инкапсуляция.

   


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

PM   Вверх
ALKS
Дата 10.5.2006, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



Цитата(Domestic Cat @ 10.5.2006,  17:37)
Цитата(ALKS @  10.5.2006,  08:05 Найти цитируемый пост)
1. интерфейсы - не согласен. полностью абстрактный и public класс без свойств суть интерфейс. то что в С++ нет специального ключевого слова (а кстати в поcледних стандартах деж есть уже, кажется) не принципиально. 

Pure abstract класс не есть интерфейс, тк может содержать и неабстрактные методы. 

Под Pure abstract класс я понимаю класс все методы которого - абстракты. на то он и pure. smile

Цитата(Domestic Cat @ 10.5.2006,  17:37)

Цитата(ALKS @  10.5.2006,  08:23 Найти цитируемый пост)
Ребят, интерфейсы введены в язык Java галвным образом для того, чтобы явно поддержать их множественное наследование на уровне специального синтаксиса. нету в них ничего существенного. немного более удобно и проще абстрактного класса. но отсутсвие этого ключевого слова не являеться существенным отличием - относим в "в существенные отличия ООП" smile

Интерфейсы - одно из главных достижений Java, тк представляют собой иной ООП концепт - отделение набора операций (интерфейса) от имплементации, "чистый" полиморфизм. Наследование класса же - это еще и наследование имплементации и инкапсуляция.

Я считаю что это больше особенности проектирования а не программирования. вы можете описать Pure abstract класс в Java. Но вы не сможете множественно относледовтаься от него. по-этому у вас нету выбора. в С++ вы можеет относледовтаься множественно от чего угодно поэтому вам не нужен специальный синтаксис. но ОК ОК я не хочу спорить. Domestic Cat - прав.
все внесено в оригинальный пост. 
PM   Вверх
Domestic Cat
Дата 10.5.2006, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(ALKS @  10.5.2006,  08:54 Найти цитируемый пост)
Под Pure abstract класс я понимаю класс все методы которого - абстракты. на то он и pure. smile

Никто не запрещает дописать туда неабстрактные методы, язык это позволяет. 


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

PM   Вверх
ALKS
Дата 10.5.2006, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



Цитата(Domestic Cat @ 10.5.2006,  18:10)
Цитата(ALKS @  10.5.2006,  08:54 Найти цитируемый пост)
Под Pure abstract класс я понимаю класс все методы которого - абстракты. на то он и pure. smile

Никто не запрещает дописать туда неабстрактные методы, язык это позволяет.

не придерайся. если в него допишут код он уже не будет pure т.е. не будет интерфейсом. то что язык это позволят - это уже вопрос другой. я же просто привел пример как получить интерфейс в С++ вот и всё. 
PM   Вверх
Kars
Дата 11.5.2006, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 27.4.2006

Репутация: нет
Всего: нет



Java платформонезависима , надо только виртуальную машину поставить и всё  smile  
PM MAIL   Вверх
ALKS
Дата 11.5.2006, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



Цитата(Kars @ 11.5.2006,  17:09)
Java платформонезависима , надо только виртуальную машину поставить и всё  smile

1.это обсуждалось выше, хочеш пример java-программы, которая будет правильно работать в Windows и не хрена не правильно в Unix? smile кое за чем следить в программах придеться. пусть и не сильно за многим...
2. а если нету JVM под платформу? под MS DOS - нету! smile 
PM   Вверх
w1nd
Дата 11.5.2006, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата
1. это обсуждалось выше, хочеш пример java-программы, которая будет правильно работать в Windows и не хрена не правильно в Unix?

Так это java платформонезависима, а не чьи-то программки.

Цитата
 а если нету JVM под платформу?

Напишите, если нужна. 

Это сообщение отредактировал(а) w1nd - 11.5.2006, 18:43


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
powerOn
Дата 11.5.2006, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата

хочеш пример java-программы, которая будет правильно работать в Windows и не хрена не правильно в Unix? 


я хочу. Выкладывай, или пришли мне на ящик. 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
JUncle
Дата 12.5.2006, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(ALKS @  11.5.2006,  17:14 Найти цитируемый пост)
а если нету JVM под платформу?

А если под платформу нет компилятора для другого языка?

Цитата(ALKS @  11.5.2006,  17:14 Найти цитируемый пост)
под MS DOS - нету!

Под MS-DOS - и не будет! Это технически невозможно.
 
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
w1nd
Дата 12.5.2006, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата
Под MS-DOS - и не будет! Это технически невозможно.

Почему? 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
powerOn
Дата 12.5.2006, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159





Цитата(w1nd @  12.5.2006,  22:58 Найти цитируемый пост)
Цитата
Под MS-DOS - и не будет! Это технически невозможно.

Почему?  

Ох, давно это было...
1) Ограниченность адресуемой оперативной памяти.
Вроде свего  1 мегабайт. Хотя...  для Java ME хватит.  smile 
2) Отсутствие многозадачности. Тут даже мобильная Java не потянет...
ну, там еще есть разного рода проблемы...
 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
maxim1000
Дата 13.5.2006, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 3334
Регистрация: 11.1.2003
Где: Киев

Репутация: нет
Всего: 110



Цитата(JUncle @  12.5.2006,  06:49 Найти цитируемый пост)
Под MS-DOS - и не будет! Это технически невозможно


Цитата(MoonCat @  12.5.2006,  22:18 Найти цитируемый пост)
1) Ограниченность адресуемой оперативной памяти.
Вроде свего  1 мегабайт. Хотя...  для Java ME хватит.   
2) Отсутствие многозадачности. Тут даже мобильная Java не потянет...
ну, там еще есть разного рода проблемы...


сразу скажу, человек я - о Java знающий издалека
но интересно: если у нас есть интерпретатор неважно какого кода (если я не ошибаюсь, это является одним из способов построения JVM), то разве нельзя там обойти все эти отличия?
грубые прикидки:
многозадачность - после каждых N исполненных команд байт кода делать переключение потоков (т.е. просто сохранять контекст одного и переводить программный счётчик на другой кусок кода)
ограничения по памяти - так мы же (в данном случае с точки зрения создателей интерпретатора) и обрабатываем эти запросы, кто мешает сделать свой алгоритм подгрузки/выгрузки страниц на винт?

да, несомненно, такая реализация будет медленной, но всё же не невозможной...

?

Добавлено @ 00:58 
P.S.
машину Тьюринга ведь можно сделать мод DOS  smile  


--------------------
qqq
PM WWW   Вверх
w1nd
Дата 13.5.2006, 04:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 22.3.2006
Где: Москва

Репутация: 20
Всего: 54



Цитата(MoonCat @ 12.5.2006,  23:18)
2) Отсутствие многозадачности. Тут даже мобильная Java не потянет...

Вытесняющая многозадачность в реальном режиме (DOS) реализуется довольно просто. При чем почти точно так же, как и в современных ОС защищенного режима. 


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
JUncle
Дата 13.5.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 6.4.2006
Где: Казань, РФ

Репутация: нет
Всего: 1



Цитата(maxim1000 @  13.5.2006,  00:58 Найти цитируемый пост)
сразу скажу, человек я - о Java знающий издалека
но интересно: если у нас есть интерпретатор неважно какого кода (если я не ошибаюсь, это является одним из способов построения JVM), то разве нельзя там обойти все эти отличия?
грубые прикидки:
многозадачность - после каждых N исполненных команд байт кода делать переключение потоков (т.е. просто сохранять контекст одного и переводить программный счётчик на другой кусок кода)
ограничения по памяти - так мы же (в данном случае с точки зрения создателей интерпретатора) и обрабатываем эти запросы, кто мешает сделать свой алгоритм подгрузки/выгрузки страниц на винт?

да, несомненно, такая реализация будет медленной, но всё же не невозможной...

Не забывайте что все это не влезет в 1 МБ (теоритический максимум - на деле все гораздо хуже) 
--------------------
class JUncle extends Man // singleton{/*...*/}
PM MAIL   Вверх
LSD
Дата 13.5.2006, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(MoonCat @  13.5.2006,  00:18 Найти цитируемый пост)
Ох, давно это было...
1) Ограниченность адресуемой оперативной памяти.
Вроде свего  1 мегабайт. Хотя...  для Java ME хватит.   
2) Отсутствие многозадачности. Тут даже мобильная Java не потянет...
ну, там еще есть разного рода проблемы...

1. Игрушки спокойно это обходили, если помнишь DOOM требовал себе не менее 4Мб памяти, и делал он это не из жадости, а реально эту память использовал. Во-первых есть такая программа DOS4GW которая предназначена для перевода машины в защищенный режим, с возможностью адресовать все 4 Гб памяти. Во-вторых можно самому перевести процессор в защищенный режим, и я даже писал на ассемблере программу которая это делает.
2. Никто не мешает JVM взять на себя задачи ядра по разделению процессорного времени. И кстати в спецификации JVM записано, что JVM вольна использовать потоки ОС для реализации многозадачности, или взять на себя разделение времени между потоками. Как вариант взять за основу готовое микроядро, тот же MACH, и на базе его реализовать это дело.

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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
powerOn
Дата 13.5.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Цитата

1. Игрушки спокойно это обходили, если помнишь DOOM требовал себе не менее 4Мб памяти, и делал он это не из жадости, а реально эту память использовал. Во-первых есть такая программа DOS4GW которая предназначена для перевода машины в защищенный режим, с возможностью адресовать все 4 Гб памяти. Во-вторых можно самому перевести процессор в защищенный режим, и я даже писал на ассемблере программу которая это делает.
2. Никто не мешает JVM взять на себя задачи ядра по разделению процессорного времени. И кстати в спецификации JVM записано, что JVM вольна использовать потоки ОС для реализации многозадачности, или взять на себя разделение времени между потоками. Как вариант взять за основу готовое микроядро, тот же MACH, и на базе его реализовать это дело.


Ну здрасти! Перейти в защищенный режим, реализовать управление процессами, еще можно файловую систему за одно доработать, поддержку длинных имен файлов включить, Еще пару батиков, и все это хозяйство можно обозвать, ну, например "Джавиндоус"...  smile 

Согласен, LSD,  конечно же с технической точки зрения это реализуемо, но какой ценой... 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
ALKS
Дата 13.5.2006, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 354
Регистрация: 22.3.2006

Репутация: 1
Всего: 11



Ребят, а вы думаете мало других экзотических OS под которые JVM трудно писать? 

с MSDOS все просто, нету под нее JVM, не потому что ее сложно сделать (да ничего там сложного принципиально нету, да и с памятью нету проблеммы в защещенном режиме достигаеться вполне 32bit адресация http://ru.wikipedia.org/wiki/386DOS, да и кто вам сказал что надо все разрабатыватьс  нуля? качественно написанные библиотеки для защещенного режима, длинных имен файлов, мнопоточности и т.п. 1000% существуют - купил и вперед.), а потому что она там никому не нужна. не пишут сейчас под DOS софт. тем более серверный софт, в чём Java особенно сильна smile 
смысла вкладывать деньги в разработку этой JVM - нету, но технически - нуль проблеммо. smile  

Это сообщение отредактировал(а) ALKS - 13.5.2006, 13:06
PM   Вверх
Амортизатор
Дата 24.5.2006, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Кто нибудь слышал интересную новость? На работе коллега сказал, что в новом стандарте АНСИ С++, который появится через несколько лет, предусмотрен сборщик мусора. Мне вообще непонятно, как это можно организовать, не меняя среду исполнения. Впрочем, может речь идет просто об очередных "умных" указателях... 


--------------------
Поехали!
PM MAIL   Вверх
Void
Дата 24.5.2006, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Амортизатор, такая возможность обсуждается в Комитете (вот proposal). Но включат это в окончательную версию стандарта или нет — большой вопрос.
Речь идет именно о консервативном GC. Умные указатели давно утверждены в новом составе стандартной библиотеки.

Добавлено @ 22:45 
Цитата(Амортизатор @  25.5.2006,  00:29 Найти цитируемый пост)
Мне вообще непонятно, как это можно организовать, не меняя среду исполнения.

Работает же Boehm GC. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
DuDDits
Дата 14.4.2007, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 7.2.2007

Репутация: нет
Всего: нет



Цитата(ALKS @ 13.5.2006,  11:04)
Ребят, а вы думаете мало других экзотических OS под которые JVM трудно писать? 

с MSDOS все просто, нету под нее JVM, не потому что ее сложно сделать (да ничего там сложного принципиально нету, да и с памятью нету проблеммы в защещенном режиме достигаеться вполне 32bit адресация http://ru.wikipedia.org/wiki/386DOS, да и кто вам сказал что надо все разрабатыватьс  нуля? качественно написанные библиотеки для защещенного режима, длинных имен файлов, мнопоточности и т.п. 1000% существуют - купил и вперед.), а потому что она там никому не нужна. не пишут сейчас под DOS софт. тем более серверный софт, в чём Java особенно сильна smile 
смысла вкладывать деньги в разработку этой JVM - нету, но технически - нуль проблеммо. smile

Пишут и еще как пишут сейчас под MS-DOS. Многие промышленные компьютеры предназначеные для работы на   станках с ЧПУ используют именно эту OS причем как в Росси так и за рубежом , а также многие программные комплексы для работы с оборудованием (например для АЗС - авто запр. станция), использующие специализированные промышленные компьютеры, также написаны для OS MS-DOS.  
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3411 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.