LINUX.ORG.RU
 
CARS

Вышла Java SE 7


0

5

После пяти лет разработки вышла в свет седьмая версия одного из самых популярных в мире языков программирования Java и соответствующего инструментария для разработки (JDK). Это первый крупный релиз после приобретения Sun Microsystems компанией Oracle. Также впервые в истории платформы Java в основу коммерческого продукта JDK легла версия OpenJDK с открытым исходным кодом. Фреймворк fork/join, обновлённый рендеринг для Java 2D и полностью новый звуковой движок Gervill — всё это результаты работы сторонних по отношению к Oracle разработчиков.

По сравнению с релиз-кандидатом никаких крупных изменений не произошло. Из основных нововведений следует отметить:

  • Поддержка языков с динамической типизацией;
  • Улучшения синтаксиса языка Java в рамках проекта Coin;
  • Unicode 6;
  • Обновлённый стек XML-технологий: JAXP 1.4, JAXB 2.2a и JAX-WS 2.2.

За свою пятнадцатилетнюю историю технология Java успела обосноваться на более чем миллиарде компьютеров по всему миру и сплотить вокруг себя девять миллионов разработчиков. А по словам Адама Мессингера (вице-президента Oracle по разработке), язык Java стал наиболее распространенным языком программирования за всю историю вычислительной техники.

>>> Скачать новые JRE и JDK

>>> Список изменений

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

СКАЖИ СВОЕМУ КОМПЬЮТЕРУ, ЧТОБЫ ЗАПЕР ДВЕРЬ

любительская автоматизация; устройство с открытой прошивкой
исходные тексты всех программ, открытые библиотеки
http://www.unicontrollers.com/products/unc01x

[#] Ответ на: комментарий от AVL2 30.07.2011 23:42:04  

> А json подразумевает взаимно однозначное соответствие содержимого файла и его модели в программе, поэтому и надобность в отдельном валидаторе чисто умозрительная. Вполне достаточно валидации, которая по любому уже есть в программе.

а как ты проверишь, что пришедший из другой системы файл корректен? его составляет не твое приложение, так что придется писать свой велосипед-валидатор и придумывать свою велосипед-схему данных.

или я не понял ход твоей мысли или валидация JSON идет через libastral?

** ()
[#] Ответ на: комментарий от AVL2 30.07.2011 23:50:58  

>> Ценность XSD в том что написав XSD ты применяешь стандартую либу для валидации XML. Это не тоже самое что писать ручной валидатор для каждого ини файла.

> Ценность сего весьма условна. Для большинства форматов схемы просто нет. Не написали.

Как только вы ничинаете интегрироваться с другой системой, а лучше несколькими, так сразу ценность XSD становится на вес золота. к примеру приходят данные и обработчик разваливается - кто идиот?

ответить на этот вопрос помогает XSD - если входные данные валидируются независимой тулзой по XSD, то косяк в принимающем коде. А если валидацию не проходят и вместо даты вам прислали стринг с именем пользователя, то клин в другой системе.

как это сделать на JSON? глазками будете кило- и мега- байты данных просматривать? запаритесь ;)

** ()
[#] Ответ на: комментарий от Begemoth 30.07.2011 19:14:54  
Bioreactor

> формально рассуждать о свойствах программы

Позвольте, но Вы ответили мне, как ученый-теоретик, а не как программист-практик.

Зачем мне практически нужны лямбды? Для каких конкретно задач?

*** ()
[#] Ответ на: комментарий от Bioreactor 31.07.2011 12:27:16  
Pi

как минимум чтобы не городить реализацию интерфейса на каждый чих

***** ()
[#] Ответ на: комментарий от Bioreactor 31.07.2011 12:27:16  
Begemoth

> Позвольте, но Вы ответили мне, как ученый-теоретик, а не как программист-практик.

Повзольте, но Вы дочитали пост до конца:

>>-----Цитата---->>

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

<<-----Цитата----<<
***** ()
[#]  

Все остальные и так отставали в технологическом плане от Java лет на 15 минимум, а теперь и вовсе никаких шансов не осталось догнать.

Так смешно, когда кто-то смеет вякать против Java! Это делают только те, кто не смог осилить всей глубины технологической пропасти между Java и отстающими.

anonymous ()
[#] Ответ на: комментарий от eliriand 28.07.2011 23:12:50  

> Жду лямбда-выражения как соловей лета.

Только не в моей Java!

Опыт дотнета доказал, что практической пользы от этой матанистой чуши никакой, а write only код писать с ними становится на порядок легче. Это совсем не то, что нужно языку программирования 21-го века.

anonymous ()
[#] Ответ на: комментарий от d9d9 29.07.2011 12:01:18  

> Глядишь, лет через 20ть, и аналог LINQ осилят :-D

Ты бы еще предложил осилить указатели из C и COMMON-блок из Фортрана.

В современном языке программирования такие уродливые извращения просто не нужны. Перестаньте пачкать идеально прекрасный язык Java своими грязными идеями!

anonymous ()
[#] Ответ на: комментарий от anonymous 31.07.2011 17:36:35  
d9d9

> В современном языке программирования такие уродливые извращения просто не нужны

Ты вообще здоровый? С головой дружишь? Или не в теме?

* ()
[#] Ответ на: комментарий от Begemoth 30.07.2011 19:14:54  

> Лямбда исчисление нам нужно, для того чтобы можно формально рассуждать о свойствах программы, но это вообще отдельная тема.

Halting problem уже решили? Нет? Тогда все эти "формальные рассуждения" куска какашки не стоят на практике. На практике надежность достигается за счет фанатичного следования best practices, грамотному применению паттернов, unit testing и continuous integration. Никаких "формальных рассуждений" нигде в реальной практике нет и быть не может.

> Фактиечски это небольшой синтаксический сахар для уже имеющихся в Java локальных классов.

Этот синтаксический сахар позволяет превращать програмы в синтаксический мусор. Java идеально прекрасна, и добавление любой "более короткой" формы записи чего бы то ни было моментально нарушает гармонию.

anonymous ()
[#]  
maniacscientist

Когда же оно подохнет окончательно...

()
[#] Ответ на: комментарий от d9d9 31.07.2011 17:44:19  
Begemoth

> Ты вообще здоровый? С головой дружишь? Или не в теме?

Я думаю, он просто толстый тролль.

***** ()
[#] Ответ на: комментарий от d9d9 31.07.2011 17:44:19  

> Ты вообще здоровый? С головой дружишь? Или не в теме?

это такой веселый троллинг )))

** ()
[#] Ответ на: комментарий от iZEN 30.07.2011 17:48:34  
Nirdosh

.properties? сходи голову подлечи... пропертями он собрался описывать спринговые бины...

()
[#] Ответ на: комментарий от Nirdosh 31.07.2011 18:59:11  
Nirdosh
<bean id="petStore" class="org.springframework.samples.jpetstore.services.PetStoreServiceImpl">
    <property name="accountDao" ref="accountDao"/>
    <property name="itemDao" ref="itemDao"/>
</bean>
bean1.id="petStore"
bean1.class="org.springframework.samples.jpetstore.services.PetStoreServiceImpl"
bean1.property1.name="accountDao"
bean1.property1.ref="accountDao"
bean1.property2.name="itemDao"
bean1.property2.ref="itemDao"

Это ппц какой косяк с 1 и 2 у property и bean. А заменять это на какие-то значения будет последний кретин только, который будет послан далеко нахрен. Так как никто не будет потом строк штук 20 редактить, когда в xml это всего одно значение.

()
[#] Ответ на: комментарий от Begemoth 31.07.2011 0:03:04  

>А если это данные созданные старой версией программы?

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

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

Это простейший вариант. В более сложных случаях можно использовать политики преобразований или хранить правила преобразований в самом файле с данными.

> Если у нас есть отдельная схема мы может вынести проверку корректности из кода программы,

а программа будет хавать все подряд?

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

В общем случае это будет жирный комбайн. xslt тому яркое подтверждение.

***** ()
[#] Ответ на: комментарий от VoDA 31.07.2011 11:37:22  

>как это сделать на JSON? глазками будете кило- и мега- байты данных просматривать? запаритесь ;)

1) формальное описание формата

2) валидатор, соответствующий этому описанию.

Написать xsd зачастую сложнее, чем написать валидатор.

***** ()
[#] Ответ на: комментарий от AVL2 31.07.2011 23:55:28  

xsd и есть формальное описание формата. формальнее некуда )))

** ()
[#] Ответ на: комментарий от Begemoth 31.07.2011 13:35:03  

Замыкания конечно заманчивы, но я недавно прочел документ в котором разъяснялось как дорого обойдется их ввод. Нам же не нужны замыкания в вакууме, нужно обновить API, например добавить метод forEach в интерфейсы коллекций, для удобного прохода по всем элементам. Если мы добавим этот метод в Collections то все классы реализующие этот интерфейс должны быть переписаны, т.е. мы тогда поломаем обратную совместимость. Для сохранения совместимости будет доработана концепция интерфейсов, так чтобы было необязательно реализовывать все его методы.

interface Collections<E> {
 // ...

  void forEach(Body<E> b) default Collections.<E>forEach(b) 

}

Вам еще нужны замыкания?

anonymous ()
[#] Ответ на: комментарий от anonymous 01.08.2011 2:18:52  
Begemoth

> Замыкания конечно заманчивы, но я недавно прочел документ в котором разъяснялось как дорого обойдется их ввод

Можно ссылку?

> Если мы добавим этот метод в Collections то все классы реализующие этот интерфейс должны быть переписаны

А зачем forEach добавлять в интерфейс Collection? Эта функция может быть определена на итераторах, см. STL.

***** ()
[#] Ответ на: комментарий от AVL2 31.07.2011 23:53:13  
Begemoth

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

Что собственно и предлагалось, только не таблица преобразований, а набор правил преобразования версии N в N+1.

> а программа будет хавать все подряд?

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

***** ()
[#] Ответ на: комментарий от Begemoth 01.08.2011 8:06:52  

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

и молча падать или выполнять случайный набор инструкций, если ей подсунули что-то иное?

***** ()
[#] Ответ на: комментарий от VoDA 01.08.2011 0:28:03  

>xsd и есть формальное описание формата. формальнее некуда )))

Ну так и в чем вопрос?

Для json схема будет заметно проще.

***** ()
[#] Ответ на: комментарий от VoDA 30.07.2011 11:32:08  
hobbit

> INI не иерархический или имеет странный синтаксис для вложенности одних данных в другие.

+ много. У нас на фирме в 90-е, пока XML ещё не было, насоздавали сложных описаний на основе INI. Поскольку из соображений совместимости тащить эти форматы кое-где приходится до сих пор, я порой открываю файлы и содрогаюсь.

***** ()
[#] Ответ на: комментарий от Begemoth 01.08.2011 8:00:07  

Файл pdf из которого я узнал о грядущих изменениях я не нашел. Думаю подойдет ссылка на JCP документ с запросом на реализацию замыканий, см пункт 2.7: http://www.jcp.org/en/jsr/proposalDetails?id=335

>>-----Цитата---->>

We propose extending the semantics of interfaces in the Java Language to support virtual extension methods, whereby an interface can nominate a static default method to stand in for the implementation of an interface method in the event that an implementation class does not provide an implementation of the extension method. This enables interfaces to be augmented with new methods "after the fact" without breaking existing implementation classes.

<<-----Цитата----<<
anonymous ()
[#] Ответ на: комментарий от anonymous 01.08.2011 15:55:09  
Begemoth

> Думаю подойдет ссылка на JCP документ с запросом на реализацию замыканий, см пункт 2.7

> Вам еще нужны замыкания?

Вы хотели сказать, что замыкания потребуют работы со стороны Oracle? Не вижу в этом проблемы, совместимость сохранится при переходе на Java 8.

***** ()