Андрей АK писал(а):
И о чём это говорит?
А почему объекты не могут передаваться по значению?
Раз передаются по значению, то уже не объекты?
ЛЮБОЙ тип данных JAVA наследует от Object и этим всё сказано - идите читайте учебники.
О, как всё запущено... Прочитайте-ка на досуге
JLS 4.1 и больше не делайте ложных заявлений в областях, в которых не шарите..
mr.Aleph писал(а):
Андрей АK писал(а):
Интерфейсы - это фундамент Java - этот механизм удачно спёрли у COM-технологии и конечно это не COM, но это её клон ...
Ложное утверждение. Если вы бы имели хоть какое-то представление об истории языков программирования или хотя бы заглянули в Википедию, то поняли бы, что корни Java лежат в языках родившихся за долго до COM. Фактически Java --- это почти-почти Modula-3 с сишным синтаксисом... Вообще сравнивать COM и Java совершенно некорректно. Ключевой составляющей COM является бинарный стандрт, накладывающий строгие ограничения на представление объектов в памяти. Стандарт Java таких ограничений не накладывает (накладываются только семантические и синтаксические ограничения). Более того, COM создан с целью облегчить взаимодействия программ написанных на разных языках, дать возможность заменять отдельные компоненты... Java была создана совершенно с другими целями и свойств COM не разделяет.
Андрей АK писал(а):
Это вы неправильно себе представляете суть интерфейса - интерфейс это не бинарный стандарт не способ реализации и не что-то осязаемое.
Интерфейс - это такая-же абстракция как цикл, функция, переменная и т.д.
Конкретная реализация, в частности "строгие ограничения на представление объектов в памяти", не имеет к этой абстракции никакого отношения.
В процитированном куске моего текста нет слова интерфейс. Это раз.
Поэтому судить о том, что и как я себе представляю вы не можете. Это два.
Еще раз вам говорю,
ключевым моментом COM является его ориентированность на взаимодействие компонент реализованных на разных ЯП и как следствие фиксированный бинарный формат. Всё остальное вторично.
Андрей АK писал(а):
Ну вот , а здесь вы путаете С++ класс с COM-обьектом.
Что с чем я простите путаю? С чего вы взяли?
Андрей АK писал(а):
И ,к стати, - классы от интерфейса не наследуют - интерфейс это всего лишь список функций.
Верное замечание, формально классы интерфейсы
реализуют, но в C++ нет выделенного отношения
реализации (там интерфейсы не выделены явно, в отличие от Java), поэтому я употребил слово наследует.
Андрей АK писал(а):
Что до связи Java-COM то тут нет никаких проблем все они взаимозаменяемы, я сам писал программу, где в C++ коде использовал JAVA-интерфейс, а в JAVA программе получал данные из COM-объекта.
Мммм, это дело случайно не на каком нибудь Microsoft J# было? Там конечно Microsoft позаботилась о том, чтобы было легко производить такие вещи, как прозрачное использование COM интефейсов в Java коде...
Но вообще в стандартной Java требуются дополнительные усилия... Собственно строго говоря для произвольной JVM раскладка Java-объекта в памяти не обязана удовлетворяет стандарту COM и поэтому Java объект не может быть использован как COM-объект (верно и обратное). Вот о чем я вам толкую.
Андрей АK писал(а):
Новаторство не в семантических ограничениях (или что вы там под этой фразой понимаете) - новаторство в самой идее отделения описания доступа к объекту от конкретной реализации.
Т.е. в появлении новой абстракции программирования.
Это не новаторство. Эти концепции уже были в 80 годах, за 13 лет до COM...
Более того, совершенно очевидно, что концепция отделения интерфейса от реализации и сборки мусора совершенно ортогональны (напомню, изначально обсуждалось именно управление памятью).