LINUX.ORG.RU

Java RE 1.5 beta1 вышел


0

0

Дождались!
- Изменеения коснулись языка: метаданные, общие, перечисляемые типы; автоупаковка примитвных типов.
- Новый API управления и мониторинг JVM
- Улучшеная производительность
- Новый (совместимый со старым)look and feel по умолчанию

>>> Подробности

★★★★★

Проверено: maxcom
Ответ на: комментарий от vada

>если нет требуемых библиотек, даже если на вход блока подаются правильные данные, то на выходе ВСЕГДА будут неправильные. Твоя программа неправильная.

Стоит уточнить:

Кроме случая, если "входом" блока считать дополнительно _всё_ состояние системы - установленые библиотеки, пути к ним, переменные окружения, фазу луны, и т.д... - он таки будет правильным ;-)

DonkeyHot ★★★★★
()
Ответ на: комментарий от vada

Вообщето весь постинг шедевр, но это..

>>В твоем случае (если нет требуемых библиотек), даже если на вход блока подаются правильные данные, то на выходе ВСЕГДА будут неправильные. И не надо мне говорить, что эта часть кода ни когда не выполнится. Законы кибернетики не исключают такую возможность.

мда, кстати уж поясни почему они должны быть неправильные, да ЕЩЕ всегда?? %))


После чего кто-то возможно захочет с тобой посмотрить...

P.S. Да, и потрудись таки найдти источники. Желательно на классические учебники.. да, и еще про "Законы кибернетики" хотелось бы послушать..



ifconfig
()
Ответ на: комментарий от ifconfig

>P.S. Да, и потрудись таки найдти источники. Желательно на классические учебники.. да, и еще про "Законы кибернетики" хотелось бы послушать.

А тебе ссылочку на первоисточники таблицы умножения не надо? Желательно с авторами и списком используемой литературы?

Что ты как маленький? Если действительно интересно, сходи в библиотеку, поройся в библиографии, В гугле поищи... Всему учить надо?

vada ★★★★★
()
Ответ на: комментарий от vada

>> Ибо лекции по теме слушал аш 1987-м году.
ну оставлю это на совести твоих преподователей..


>>Многи с ЛОРа тогда еще у папки в яйцах болтались. :)))
Ну оно и понятно.. в 87 я кнечно лекции не слушал, но вот на васике уже лобал программы...


Кстати, подобным описанному мной способу реализовано в Джаве (да и не только) куча вешей.. Самый часто встречаемый, пожалуй, интрерфесы JDBC..
Вот уж и не знали люди шо они делают %)


Блин, Корвина нету, такие шедевры нельхя пропускать..

ifconfig
()
Ответ на: комментарий от vada

>>Что ты как маленький? Если действительно интересно, сходи в библиотеку, поройся в библиографии, В гугле поищи... Всему учить надо?

Мил человек, ты вроде меня не первый день тут читаешь.. Учить меня пожалуй не стоит, просто перед тем как что-то утвержать, обычно принято конкретно указывать, либо же подписываться что это ИХМО.. Я не буду спорить, что может быть под твоими "теоремами" и что-то есть, вот почему и спрашиваю источник, дабы понять как ты это истрактовал..

Более того, помоему я пока не увидел ответ на ВОПРОС почему "ВСЕГДА" неправильные??

А то я вот смотрю на кучу кода, как чуфого так и своего... блин, ну работает как ему положено..

ifconfig
()
Ответ на: комментарий от vada

> Этой теореме есть вполне вменяемое доказательство Нет такой теоремы. Если говорить о док-ве правильности блока, то оно очень простое, строите конечный автомат, получаете множество его состояний (ха-ха) и доказываете, что все они соответствуют реальности (правильные) (му-ха-ха 3 раза).

anonymous
()
Ответ на: комментарий от ifconfig

>ну оставлю это на совести твоих преподователей..

Мои преподаватели из ЛГУ. А факультет ПМПУ. (Это была вторая вышка) Если ты себя счетаешь круче их, ну тогда я удаляюсь. Извини. Был не прав. Погорячился. Исправлюсь. Больше такого не повторится.

vada ★★★★★
()
Ответ на: комментарий от vada

>>Если ты себя счетаешь круче их, ну тогда я удаляюсь

Я никогда себя не считаю "круче" других.. Более того, это слово мне вообще противно в контексте знаний...

Вопрос в том, что если я берусь что-то утверждать или советовать, то основано это либо на 100 уверености (делал сам, как в данном случае), либо упомянуто в тех источниках которые я считаю признаными , либо же я объявляю это своим мнением или видинеем проблемы.. Разумееться последнее не является истиной, но так или иначе на чем то основано..

Кстати, если внимательно читаешь форум, я сейчас пишу крайней мало, все больше читаю.. Писать почти не интресно..

ifconfig
()
Ответ на: комментарий от Eugeny_Balakhonov

Ребят,ну что вы спорите над всякой фигней?

Ну какая разница, что там было в первой Яве и почему сейчас возвращают? Ява это не просто язык, это платформа:

JUnit, Ant, Log4j Struts, Hibernate, JBoss, Weblogic .... etc.

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

Да, потихонечку вернули шаблоны. Но ведь метадата - абсолютное новое. Раньше не было. Так что Ява не идет уж в хвосте Дот нета.

anonymous
()
Ответ на: комментарий от Eugeny_Balakhonov

> Видать думали не тем местом, раз в 1.5 приходится возвращать назад.

> Без enum'ов вообще кошмарные вещи приходится делать: либо эмулировать enum'ы классами, создавая толпу лишних классов в проекте, либо ручками выписывая

А что Вам мешает org.apache.commons.lang.enum.Enum использовать?

pitekantrop ★★★
()
Ответ на: комментарий от anonymous

> Да, потихонечку вернули шаблоны. Но ведь метадата - абсолютное новое. Раньше не было. Так что Ява не идет уж в хвосте Дот нета.

Есть в C# шось такое. Но и в Java часть этой функциональности можно было получить с помощью XDoclet.

pitekantrop ★★★
()
Ответ на: комментарий от ifconfig

>Я никогда себя не считаю "круче" других..

Я тоже. Поэтому объясняю еще раз.

Ну, вопервых, интерфейсы у сименс и у нокия скорей всего разные. Поэтому, придется написать класс, который приведет все к общему знаменателю. Но здесь кременала нет. тут все нормально. Класс, так класс.
Проблема другая. Даже две. Вторая вытекает из первой. Ресурсы мобила не ахти какие, и, как следствие, загружать в него ненужную библиотеку не очень-то умно. А могут быть и лицензионные проблемы. я не знаю.
Вы предлагаете просто не подгружать в сименс либу от нокии. Ну все просто. Зачем она там нужна!?

Думаю, вы со мной согласитесь, что увидить эксепшн на экране, или услышать любимую мелодию это не одно и тоже. Поэтому к программе для мобила стоит отнестись с соответствующей долей ответственности. А вы своим предложением, ЗАВЕДОМА, закладываете баг. В коде есть обращение к библиотеке? Ну не обращение, а имя этой библиотеки. Вы к ней по имени обращаетесь.

String [] stupid = { "com.nokia", "com.siemens" };

Есть! Вот она либа "com.nokia"!!!!

Библиотека есть? Нет! И как следствие вот этот код

Music i_usage_now = (Music_int) Class.forName(stupid[0]).newInstance();

вместо ожидаемого класса Music МОЖЕТ выдаст вам Exception. На входе блока данные правильны, на выходе полная хрень. И, повторяю, не надо говорить, что такой вызов ни когда не произойдет. Кроме правильности программы есть еще и оборудование. А оно тоже умеет сбоить. На солнце очередная вспышка, и ваш 0 стал 1, или наоборот. И что мы имеем? У железки есть своя вероятность сбоя, да еще и вы закладываете дополнительную возможность программного сбоя. И как результат, уровень надежности всей системы ниже, чем это можно было ожидать. А оно надо?
Не проще ли в программе для нокии реализовывать ТОЛЬКО возможности нокии, а для сименса только возможности сименса.

Поверьте. Теоремы придумал не я. Мне на это ума не хватит. Я только ими пользуюсь.

На самом деле, данная проблема яйца выеденого не стоит. ant-ом все решается на раз-два. Откомпилировать код под конкретную мобилу дело техники, и элементарных знаний. Да что ant-ом, и make-ом можно. Вариантов можно напридумывать кучу.

vada ★★★★★
()
Ответ на: комментарий от vada

>В твоем случае (если нет требуемых библиотек), даже если на вход блока подаются правильные данные, то на выходе ВСЕГДА будут неправильные.

Vada, ты мне друг, но истина дороже :)) Ты погорячился :)).

Нормальная такая stuid factory.. Народ оценил :))

P.S.
2 ifconig - respect.

Alter ★★
()
Ответ на: комментарий от ifconfig

>>Блин, и эти люди запрешают мне ковыряться в носу (с).
>>Интрерфес я надеюсь у всех одинаковый?? к приеру Music_int

Ты меня за идиота то не держи. Там не то что интерфейсы, а вообще классы разные. И даже подход зачастую. И функциональность.

Эта часть за границей стандарта MIDP 1.0 и все извращаются как могут.

Кроме того писать приходится все равно

import com.siemens....
import com.nokia.....

Как это _стандартными_ средствами Java реализовать?
В том то и дело, что никак.

Приходится использовать всякие тулзы сторонних разработчиков или свои.

Eugeny_Balakhonov ★★
()

Хорошо работает. Темка ничего. Метал более строгий правда.

Из хорошего: поддержка новой системы шрифтов. Удобно, красиво. Существенно быстрее запускаются и работают клиентские приложения.

Из плохого: все те же проблемы с АА.

Будем копать как говорится.

set
()
Ответ на: комментарий от Eugeny_Balakhonov

>>Ты меня за идиота то не держи.

Да боже упаси..

>>Там не то что интерфейсы, а вообще классы разные. И даже подход зачастую. И функциональность.

Билин, а интерфесы то на что?? В смысле зачем их вообще придумали?? конкретней это кнечно к учебнику а вкратце - да вот для таких вещей.. ЧТоб стандартизировать.. Интерфейс один - имплементаций скака душе угодно, причем от разных производителей.

Надеюсь Вы не будете спорить что RDBMS все ну супер разные, похлеше ващих телефонов.. А вот интрефейс для них задан стандартный... Не нравиться стандартный, пиши свой или юзай напрямую... но стандарт соблюди, иначе твой драйвер (прога) нахрен некому не сдасться..

найди отличия между.. естествено много пропущено, типа ехзепшинов

------------
import oracle.jdbc.driver.OracleDriver;

бла бла

{
new OracleDriver();
}

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

и вариант второй, который фигурирует во всех примерах..

-------
import java.sql.*;

{
Class.forName("oracle.jdbc.driver.OracleDriver");
}

-----------------------
и так и так будет работать..

>>Как это _стандартными_ средствами Java реализовать?

а теперь смотри на то что импортируеться..


P.S. Java вобщем то совсем не мой основной профиль, так пописываю, когда припичет.. Но но.. я писал (за деньги) на многих языках, в том числе и на С++ .. Но я как высказываю свою ИХМО - типа ФУФЕЛ в случее когда знаю язык или технологию досконально... а высказывания вот там это так, а тут я не знаю как -- ну мягко говоря некоректны..






ifconfig
()
Ответ на: комментарий от vada

>>Ну, вопервых, интерфейсы у сименс и у нокия скорей всего разные.

Дык, во превых это уже неправильно.
во вторых, как в этом случае тебя спасет препроцессор??

Это тогда не препроцессор, а другая прога получаеться.. И скорей всего наоборот, обший код надо выносить в либы с одинаковым интрефейсом.

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


>>Есть! Вот она либа "com.nokia"!!!!
Гм.. а ничего если я рискну предположить, что это обыкновенная текстовая строка.. (ну точнее класс String, но это ша неважно) и из смысловой нагрузки она несет не больше чем "Hello, world" ??

Где ты там либу увидел??

>>вместо ожидаемого класса Music МОЖЕТ выдаст вам Exception.
И шо?? что страшного в жэтом произойдет?? она может выдать различные Екзепшины в милионе случаев.. Например у телефона аккамулятор сел.. Из за того что прога подняла екзепшн мы ее будем считать "неправильной" ?? дык, я же не зря совершенно конкретно указал на JDBC.. Просто это самый яркий и используемый пример. Если логика проги не завязана на фичи базы и допустима в рамках SQL92 то вы можете подставить любой драйвер.. Это делают сплош и рядом.. и никто от "неправильности" еще не умер.. Включая таких монстров как Оракл..

>>ant-ом все решается на раз-два
Проблема не то чтобы яйца не стоит, а просто говорит о том, что существуют стандартные способы решать стандартные задачи.. Если вам этот способ не нравится(ну или действительно не подходит) - так надо и говорить, а не кричать что в языке это не реализовано... ибо окажетесь в глупом положении, как сейчас например..



ifconfig
()
Ответ на: комментарий от Eugeny_Balakhonov

> Кроме того писать приходится все равно

> import com.siemens....
> import com.nokia.....

Ты серьезно??? Тогда таких бакланов надо увольнять без суда и следствия.

anonymous
()
Ответ на: комментарий от Eugeny_Balakhonov

>Пишу софтинки для сотовых телефонов. Базис у всех KVM один - J2ME MIDP 1.0. Но дополнительные классы, вроде вывода звука, музыки и т.д. у всех свои. Например у Siemens это набор классов com.siemens..., у Nokia - com.nokia..... Хочется из одних сорцов компилять два разных кода. Как это сделать на Java? На C++ - не вопрос. А тут?

А тут даже пример в Language Reference привели. Кури маны и будет тебе щастье.

Небольшой хинт - if(NE_TAK_UZH_VSE_I_PLOHO) {...}, где в if - константа false (static final boolean), не будет генерить ошибок компиляции. Код естественно при этом тоже генериться не будет.

anonymous
()
Ответ на: комментарий от vada

> 1) Чтобы программный блок был правильным, необходимо, но недостаточно чтоб он имел один вход, и один выход.

Тогда значит Eceptional logic, и любые другие сайд эффекты (вывод на монитор тоже к оным относиться, как и запись на диск и тд, это признаки неправильных програм. Правильных програм тогда вообще почти нет.

> 2) Если на вход блока поступают правильные данные, и на выходе его правильные данные, такой блок счетается правильным.

Может дашь еще определение слова "правильный"?

> 3) Если все блоки программы являются правильными, то и программа является правильной.

То есть если у меня "правильнаые" детали машины, то неправильную я собрать не сумею? Гениально правильный ты наш.

r ★★★★★
()
Ответ на: комментарий от Eugeny_Balakhonov

> Ты меня за идиота то не держи.

Да у тебя самого выходит нехило.

> Кроме того писать приходится все равно > import com.siemens.... > import com.nokia..... > Как это _стандартными_ средствами Java реализовать? В том то и дело, что никак.

Иди читай букварь!

interface Music { void play(); };

class SiemensMusic implements Music { play () { com.siemens.ПроигратьЭтeХернюПоСименсовски() }

class SiemensMusic implements Music { play () { com.тщлшф.ПроигратьЭтeХернюКакНокиаЗахочет() }

class MusicFactory { Music getMusic() {return Class.forName(System.getProperty("misic.impl")).newInstance()};

r ★★★★★
()
Ответ на: комментарий от anonymous

> Небольшой хинт - if(NE_TAK_UZH_VSE_I_PLOHO) {...}, где в if - константа false (static final boolean), не будет генерить ошибок компиляции. Код естественно при этом тоже генериться не будет.

Еще один умственный изващенец.

Если у siemns и nolia API похожее, то пишется один интерфейс и 2 реализации адаптеров для каждого API.

Если разное - то и код для работы с ним будет разный, опять же в разных классах, реализующих все равно один интерфейс.

Реализация интерфейса прописывается в конфиге, пакуется в jar и грузится через Class.forName(). Все собирается ant'ом.

Бакланов, ну ты понял?

anonymous
()
Ответ на: комментарий от r

interface Music { void play(); };

class SiemensMusic implements Music { play () { com.siemens.ПроигратьЭтeХернюПоСименсовски() }

class NokiaMusic implements Music { play () { com.nokia.ПроигратьЭтeХернюКакНокиаЗахочет() }

class MusicFactory { Music getMusic() {return Class.forName(System.getProperty("music.impl")).newInstance()};

r ★★★★★
()
Ответ на: комментарий от anonymous

>Еще один умственный изващенец.

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

тем, кто все-таки не понял курить Java Language Specification п.14.20 до просветления.

anonymous
()
Ответ на: комментарий от anonymous

что-то я не понял 
как реализовать следующее

#ifdef DEBUG
...
#endif


компилируем так
cc -DDEBUG ...
??

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

done
()
Ответ на: комментарий от done

assert в Java:) не требует перекомпиляции байт кода Нужно просто хотспоту говорить нужно ли компилять эти блоки на момент старта программы Кстати C assert вычисляется и в релизе :)

Чистый define идеологически невозможен (compile once - run everywhere) - только системными пропертями (коммандной строкой) и проверкой if

anonymous
()
Ответ на: комментарий от ifconfig

Не. Ну товаришь не понимает. Есть большая разница между правильной программой, и программой правильно работающей.

На сообразительность.

Обращение к библиотеке есть? Ну пусть через заднее крыльцо, через "Hello, world". Есть? Есть, причем, ВСЕГДА есть. В коде программы это реализовано, и превращено в байт код. Пишем true.

Сама бибилиотека есть? Нету, причем, ВСЕГДА нету. Вы ее решили не включать в рабочую систему. Пишем false.

А теперь, внимание, вопрос!!! Какое значение примет right ?
boolean right = (true && false);

Подсказать? Не надо?
Вот это данное значение right и есть состояние, которое говорит, что программа ВСЕГДА неправильная.

>Например у телефона аккамулятор сел.. Из за того что прога подняла
>екзепшн мы ее будем считать "неправильной" ??

1) Вовсе нет. Правильность, или неправильность программы определяется не наличием, или отсутствием елсепшена. Вот тут товарисчь предлагал построить конечный автомат, просмотреть все его состояния... Типа, вот тебе и доказательство правильности программы. Все не так просто. Вот в таком выражении:
m = 2 * m;
Постороенный конечный автомат будет испольковать константу 2, и на ее присутствии мы будем анализировать состояния конечного автомата, что является в корне неправильно. Т.к. мы еще не доказали, что константа 2 есть правильная в данном блоке кода.

2) Если вместо музыки сименс выдаст эксепшн, что у него нет библиотеки для нокии, это весьма озадачит пользователя телефона. Батарейка у вас может быть заряжена, а может быть и не заряжена. Музыкальный файл у вас может быть, а может и не быть. Но библиотеки нокия у вас всегда нет. Почувствовали разницу? Батарейка села - обычное дело. Музыкальный файл не нашел - обычное дело (ну удалил я его). А вот не нашел того, чего пожизни искать не надо, это уже неправильно.

Я пронимаю, что я вовсе не авторитет. Но такая посылка. что я денег зарабатывал на программировании, и всегда так делал, не катит. (Кстати пример про jdbc совсем не в тему). Почитайте книжки, и попробуйте уяснить разницу между правильной программой, и правильно работающей программой. Для начала пойдет "Теория и практика структурного программирования". Помница, там был раздел про правильность программ. Ну там, на пальцах абъянялось. Вот только авторов я не помню. Давно это было. Издавалась, помоему, издательством "Мир".

vada ★★★★★
()
Ответ на: комментарий от vada

Про логику

>Вот это данное значение right и есть состояние, которое говорит, что программа ВСЕГДА неправильная.

Тут ошибка. Вместо "неправильная" стоит писать "не правильная", тогда при правильном определении слова 'правильная' все будут правы:-).

DonkeyHot ★★★★★
()
Ответ на: комментарий от vada

> Если вместо музыки сименс выдаст эксепшн, что у него нет библиотеки для нокии

Почему она должна выдать, если библиотека на нокии не будет пытаться подгружаться? Русским языком же сказал, что подгрузка библиотеки нокиа будет работать только в том случае, если программа работает на нокиа. Если программа будет работать на сименсе, то обращения к библиотеке нокиа не произойдет никогда. И, соответственно, компилятор не будет ее подгружать и вываливать exception.

CybOrc
()
Ответ на: комментарий от vada

>>Обращение к библиотеке есть? Ну пусть через заднее крыльцо, через "Hello, world". Есть? Есть, причем, ВСЕГДА есть.

Это уже не смешно становится.

Еще раз вопрос, ГДЕ ты УВИДЕЛ обрашение к ненужной библиотеке?? да еще всегда??

Определение колекции Стрингов - вижу.
попытку загрузить ОДИН ЕДИНСТВЕННЫЙ класс, реализующий интерфес, ДЛЯ ДАННОЙ модели и с именем содержашимся в колекции вижу...
при отсутсвии этого класса в путях возникает исключение..- тоже вижу..

Може я слепой, где обрашение к ненужной ЛИБЕ??







ifconfig
()
Ответ на: комментарий от vada

>>Кстати пример про jdbc совсем не в тему

Продолжаем спектакль.
Назови 10 отличий примера с JDBC от обсуждаемого ?? да ладно 10, хотябы одно..

ifconfig
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.