На главную страницу AlgoNet В сотрудничестве с ZDNet
АРХИВ СТАТЕЙ 2001-6-8 на главную / новости от 2001-6-8
AlgoNet.ru
поиск

 

Место для Вашей рекламы!

 

Все новости от 8 июня 2001 г.

Sun внесет изменения в Java

Sun Microsystems уступила разработчикам и согласилась внести два дополнения в язык Java — шаг, которому компания сопротивлялась годами.

Выступая на конференции JavaOne, создатель Java Джеймс Гослинг (James Gosling) объявил о том, что Sun добавит в Java утверждения (assertions) и родовые характеристики (generics), так как это два наиболее частых пожелания разработчиков. Изменения будут внесены в версию1.4 платформы Java.

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

Полной ясности с родовыми характеристиками нет, и они вызывали много споров как внутри Sun, так и за ее пределами. По словам Гослинга, эта концепция настолько сложна, что не найдется двух разработчиков, полностью согласных друг с другом по поводу ее реализации. Он и главный научный сотрудник Sun Билл Джой (Bill Joy) «чуть не подрались» из-за того, что Джой хотел задержать Java на два-три года, пока Sun не определится с родовыми характеристиками. Однако примерно года два назад разработчики пришли к консенсусу, после чего Sun начала проводить это решение через Java Community Process. По словам Гослинга, надежность критична для Java, так как повышает производительность труда программистов, позволяя им «тратить на починку неработающих программ меньшую часть своей жизни».

Разработчики просили внести в язык Java и массу других изменений. Пару месяцев назад Гослинг открыл веб-сайт со списком всех изменений и сказал, что он подумывает «о создании исчерпывающего языка и вколачивании его в компилятор-прототип». Но он не станет вносить в Java еще какие-то изменения, так как этот язык нельзя усложнять, особенно принимая во внимание то, что им пользуются программисты самого разного толка. По оценкам Sun, во всем мире Java-программы пишут 2,5 млн разработчиков.

После Гослинга выступил президент Nokia Пекка Алапьетила (Pekka Ala-Pietila), который пообещал выпустить к концу 2002 года 50 млн Java-телефонов, а к концу 2003 года — 100 млн. Он анонсировал целое семейство продуктов на базе Java, причем некоторые телефоны исполняют код Personal Java под операционной системой Symbian, а другие используют встроенную Java. Borland предложит инструменты для создания приложений для телефонов, а Motorola и Nextel работают над тем, чтобы позволить телефонам загружать Java-приложения по беспроводной сети.

Однако для будущего процветания Java, по словам Алапьетила, необходимо внести изменения в правила Sun Java Community Process. Эту программу Sun объявила несколько лет назад как способ предоставления разработчикам возможности участвовать в совершенствовании Java, сохранив за собой контроль над технологией. Но IBM и другие постоянно жалуются на недостаточную открытость JCP. Алапьетила хотел бы иметь более широкие права по реализации кода, созданного в рамках процесса, и добиться более свободного распространения интеллектуальной собственности. От дальнейших комментариев он отказался.

На пресс-конференции, последовавшей за выступлениями, вице-президент Sun Пэт Зульц (Pat Sueltz), отвечающая за софтверную стратегию корпорации, сказала, что Sun внесет изменения в JCP и будет прислушиваться к мнению сообщества разработчиков и учиться у них и в дальнейшем. В понедельник президент Microsoft Стив Баллмер (Steve Ballmer) в ходе своего визита в Финляндию призвал к более тесному сотрудничеству с Nokia. Алапьетила не упоминал о Microsoft, но Гослинг сказал, что Microsoft «терроризировала индустрию» и организовала «заговор молчания» вокруг тех производителей, которые нападали на корпорацию. По словам Гослинга, судебный процесс Министерства юстиции США против Microsoft нарушил этот заговор и позволил развиваться «правильным социальным процессам».

 В продолжение темы:
2002-03-26   Java-вары взбалтывают кофейник веб-сервисов
Обсуждение и комментарии
Tre
8 Jun 2001 3:00 PM
Непонятно, что подразумевает ZDNet.RU когда в конце этой статьи ставит ссылку

"Другие новости раздела Open Source "
.....
странно, неправда ли?
 

AT - 220220pager.icq.com
9 Jun 2001 12:13 PM
Еще более странно то что accert уже добавлен в 1.4 Beta доспуную всем с их вебсайта.
 

АМ
14 Jun 2001 3:57 AM
Они бы лучше нормальный enum добавили!
А вообще-то можно и ДОЛЖНО было и сразу допереть до такой простой вещи!
 

Антон Блинков - bavinfopac.ru
14 Jun 2001 12:45 PM
2 AM
ну сколько уж можно говорить - enum заменяеться классом с private или protected конструктором и public static final переменными содержащими его же значения-константы. эффективность та же, что и у целочисленных enum (кроме операций с множествами). писать чуток больше, зато вы получаете полноценный тип с возможностью определения любых операций с его значениями через его методы.
 

Антон Блинков - bavinfopac.ru
14 Jun 2001 12:50 PM
2 AM
ну сколько уж можно говорить - enum заменяеться классом с private или protected конструктором и public static final переменными содержащими его же значения-константы. эффективность та же, что и у целочисленных enum (кроме операций с множествами). писать чуток больше, зато вы получаете полноценный тип с возможностью определения любых операций с его значениями через его методы.
 

Shadow
14 Jun 2001 1:16 PM
Вообще-то, SUN JDK - OpenSource.
 

Igor
14 Jun 2001 1:58 PM
2 Антон Блинков
При такой реализации придется использовать имя класса для доступа к переменной, что не нужно в нормальном enum, и при написании класса необходимо ручками присвоить переменным значения, что также в нормальном enum не нужно.
 

Антон Блинков - bavinfopac.ru
14 Jun 2001 4:12 PM
2 Igor
с первым утверждение согласен. и это на самом деле хорошо, потому как помещает названия констант в свое отдельное пространство имен. иначе все равно пришлось бы к именам добавлять уникальный префикс (суффикс), что бы не дай бог не произошла коллизия имен с другим enum.

второе утверждение не верно. в конструкторе можно задать любой закон _автоматического_ присваивания значений создаваемых констант, хоть с увеличением на 1, хоть с степенями двойки (вот одно из очевидных приимуществ использование классов).

кроме того, вы можете делать например такие вещи как определение надмножества значений через наследование, при этом сохраняя type safety.

можно переопределить метод toString(), и тогда константа сможет себя отображать мнемоническим именем, а не отвлеченным числом.

да много еще чего можно сделать, чего нельзя (неудобно) сделать с простым enum.
 

Igor
14 Jun 2001 7:21 PM
2 Антон Блинков
когда я говорил, что значения придется задавать ручками, я имел ввиду любое присваивание (последовательное, по какому-либо закону в цикле и т.д.). Кстати, если быть точным, то значения отмеченные как static final нельзя инициализировать в конструкторе, можно только в статическом блоке.

О пространствах имен: мне кажется, что на каждый enum по пространству имен не есть рулез. Сам я стараюсь enum-ы объявлять внутри классов к которым они относятся, в классе может быть несколько enum-ов (это не пустые классы и они не соданы только для введения пространства имен для enum-ов).
Что же касается того, что при эмуляции enum через классы открываются дополнительные возможности, да это так, но честно говоря очень редко возникает потребность в таких возможностях, а в общем случае стандартный enum выглядит более красиво, чем реализация через класс.
 

Антон Блинков - bavinfopac.ru
14 Jun 2001 8:41 PM
2 Igor
короче проще показать :)
class Enum {

private Enum()
 

Антон Блинков - bavinfopac.ru
14 Jun 2001 8:49 PM
2 Igor
короче проще показать :)
class Enum {
private static int count;
private int value;
private Enum() { value = count++; }
public static final Enum VAL1 = new Enum();
public static final Enum VAL2 = new Enum();
}

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

 

Igor
14 Jun 2001 10:20 PM
2 Антон Блинков
Спасибо, а то я предполагал немного другое..., долго бы еще обсуждали... :).

Я говорил, что ОБЫЧНО не нужно, это не значит, что не нужно совсем. Но мне кажется, что enum более прост для понимания про чтении программы (особенно чужой). Применение всей гибкости ООП не самоцель. Если что-то решается проше и эфективней без ООП, то ООП в таком случае - ненужное усложнение. Мне кажется, что
enum Enum{VAL1, VAL2}
проще, чем Ваш код, и в 99% такого кода вполне достаточно, если потребуется что-либо сверх этого, то тогда возможно и привлечение ООП, но не раньше.
 

Антон Блинков - bavinfopac.ru
15 Jun 2001 1:25 AM
2 Igor
тут уже начинаются эстетические пристрастия. :)
я предпочитаю более универсальные решения. на мой взгляд они дают большую гибкость, и дальнейшие изменения в коде можно делать меньшей кровью.
 

Igor
15 Jun 2001 10:04 AM
2 Антон Блинков
Согласен, но если бы в Java были enum, то имелась бы свобода выбора :)

Добавление еще одного ключевого слова не всегда засорение языка, например, в Java ( и не только ) все три оператора цикла и switch можно выразить через if..else, но никто не говорит, что язык засорен лишними операторами.
Для простых вещей должна присутствовать возможность простого решения. Да, если что-то редко используется, то придумывать для этого отдельное ключевое слово - засорение языка, но enum к редко используемым фичам я отнести никак не могу.

Я надеюсь, что когда Вы пишете на C++, то используете простой enum, а не какой-нибудь наворот из ООП :)
 

Антон Блинков - bavinfopac.ru
15 Jun 2001 12:08 PM
я стороник того, что бы конструкция включалась в язык только если она дает нечто очень полезное, что не может быть относительно просто получено используя уже имеющиеся конструкции. а просто добавлением фич, только потому, что их можно добавить, легко получить раздутых монстров а ля PL/I, C++ и Win API. каждая новая конструкция - это дополнительная сложность изучения, дополнительные синтаксические и семантические правила (и исключения из них) которые нужно держать в голове (а ОЗУ у программера не резиновое :), дополнительные сложности для реализации инструментов разработки.

с операторами структурного программирования преимущество то, что они четко определяют путь выполнения, в отличие от "макоронного" кода из if и goto. действительно, есть дублирование в конструкциях циклов (я бы оставил только сишный for) и рудиментарный оператор switch. но в Джава они были перенесены 1:1 из Си для облегчения его изучения уже имеющимися программистами.
 

REAL - realkemsu.ru
27 Mar 2002 7:18 AM
ансчет enum. Вообще крайне редко появляется в нем необходимость (говорю не только по своему опыту). А вот generic types - странная фича, из статьи (ну что делать, на этом сервере ни статьи, ни обсуждения интеллектом не блещут) совсем неясно, что это и для чего может пригодиться. То же самое и наасчет assert.
 

maq
27 Mar 2002 12:44 PM
enum MyEnum
{
ChoiceA,
ChoiceB,
ChoiceC
}

ясно и красиво - это в C#
Что касается того что необходимость в enumе появляется редко, то так может говорить только ламер
Тот кто каждый день программирует прекрасно знает что без него никуда...
 

miroh - plasmonmail.ru
28 Mar 2002 9:19 AM
Я вот уже 12 лет программирую и енумы эти использую где-то раз в год- так что приходится синтаксис вспоминать. Вот что в Java добавить бы следовало дак это свойства как с#. геттры-сеттеры надоели уж очень, кроме того это будет очень гармонировать с компонентно ориентированным программированием. А что не надо добавлять дак это делегатов - вот это УБЮЖЕСТОВО!!! Хотя я понимаю, что это уродство специально для ВБ пришпандорили, чтоб не надо было листенеров обьектов на бесике делать - так ... кинул функцию хэндлер.... Вообще Ява наиболее гармоничный язык из все что я знаю( включая русский)
 

REAL - realkemsu.ru
28 Mar 2002 11:22 AM
miroh: согласен полностью, только вопрос по поводу "свойств": а нафига? :)
 

miroh - plasmonmail.ru
28 Mar 2002 12:55 PM
REAL:
Не знаю нафига... Вообще то тут можно запутаться когда просто присваивешь свойство и когда при присваивании еще что то делается дополнительно. Но можно поменять привычки и думать, что всегда чтото происходит - так думаю правильней. Все равно же у бинов есть свойства - дык уж оформить их более естественно.
 

REAL - realkemsu.ru
28 Mar 2002 1:04 PM
miroh: это уж дельфоподобие какое-то будет :) . да и бины далеко не всегда используются (или ты про ejb? но ejb используется еще реже :)) )
 

miroh - plasmonmail.ru
1 Apr 2002 4:54 PM
А я только бины и пишу. А само приложение - просто склейка. Особенно JSP и Servlets. Надо становится быстро на EJB перевожу
 

REAL - realkemsu.ru
2 Apr 2002 2:07 PM
miroh: бывает :) . я имел в виду, что EJB - технология весьма специфическая, к тому же требующая много человеческих ресурсов. А в конторе, где пара-тройка java-программеров, работать с EJB просто убийственно
 

 

← май 2001 4  5  6  7  8  9  13  14  15 июль 2001 →
Реклама!
 

 

Место для Вашей рекламы!