URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 74961
[ Назад ]

Исходное сообщение
"Доступна для тестирования предварительная версия Java 7"

Отправлено opennews , 24-Фев-11 15:36 
Компания Oracle выпустила (http://blogs.sun.com/mr/entry/jdk7_preview) тестовую версию JDK 7 (http://openjdk.java.net/projects/jdk7/) (Developer Preview), пригодную для предварительного знакомства с возможностями Java 7 и проверки совместимости существующих приложений. Представленная тестовая версия проходит полный набор тестов совместимости со спецификацией для всех поддерживаемых платформ, но еще может иметь проблемы со стабильностью работы.  


Финальный релиз JDK 7 ожидается в конце июля или начале августа 2011 года, релиз JDK 8 планируется выпустить в конце 2012 года. Бинарные сборки JDK 7 для Linux, Solairs и Windows можно загрузить на данной странице (http://jdk7.java.net/preview/). Исходные тексты не прилагаются, так как, несмотря на то, что JDK 7 основан на открытой кодовой базе OpenJDK, в представленной сборке по прежнему используются некоторых закрытые библиотеки, над созданием открытых аналогов которых трудится проект IcedTea. Для разработки приложений на базе Java 7 можн...

URL: http://blogs.sun.com/mr/entry/jdk7_preview
Новость: http://www.opennet.me/opennews/art.shtml?num=29703


Содержание

Сообщения в этом обсуждении
"Доступна для тестирования предварительная версия Java 7"
Отправлено bav , 24-Фев-11 15:59 
Годы идут, а java, как язык, всё никак не может стать удобным. В принципе, модным парням этого и не надо, у них есть скала, кложура и груви. Но вывод типов и нормальные лямбды хотелось бы увидеть хотя бы к девятой версии.

"Доступна для тестирования предварительная версия Java 7"
Отправлено iZEN , 24-Фев-11 16:07 
> Но вывод типов и нормальные лямбды хотелось бы увидеть хотя бы к девятой версии.

А зачем смешивать императивное и функциональное программирование, статическую типизацию с динамической в одном языке? Когнитивный диссонанс не случится?



"Доступна для тестирования предварительная версия Java 7"
Отправлено bav , 24-Фев-11 16:12 
> А зачем смешивать императивное и функциональное программирование

От нынешних анонимных классов, java не становится императивнее.

> статическую типизацию с динамической

Ничего не путаешь? Ключевые слова: вывод типов, ocaml, haskell.


"Доступна для тестирования предварительная версия Java 7"
Отправлено iZEN , 24-Фев-11 16:43 
>> А зачем смешивать императивное и функциональное программирование
> От нынешних анонимных классов, java не становится императивнее.

Зато является более декларативной.

>> статическую типизацию с динамической
> Ничего не путаешь? Ключевые слова: вывод типов, ocaml, haskell.

Не распарсил. Что это такое? Практический пример приведёте?


"Доступна для тестирования предварительная версия Java 7"
Отправлено pavlinux , 24-Фев-11 17:44 
Куда русский язык катится...

Императивное и функциональное программирование.
Статическая типизация. Когнитивный диссонанс.
Императивная декларативность. Лексические переменные.

Слабо всё это на русский перевести, варианта до 1699 года?


"Доступна для тестирования предварительная версия Java 7"
Отправлено Okruzhor , 24-Фев-11 18:10 
> Куда русский язык катится...
> Императивное и функциональное программирование.
> Статическая типизация. Когнитивный диссонанс.
> Императивная декларативность. Лексические переменные.
> Слабо всё это на русский перевести, варианта до 1699 года?

Приказное и отображательное предписание.
Предварительное клеймение. Мыслительная запинка.
Приказное глашатайство. Словесные переменные.

"Идёт хорошилище по гульбищу на позорище в мокроступах"


"Доступна для тестирования предварительная версия Java 7"
Отправлено netch , 28-Фев-11 12:12 
> Приказное и отображательное предписание.

Предписание - это программа. А тут будет или предписательство, или предписательственное вразумление.

> Предварительное клеймение.

:)

Слава богу, у нас не иврит:)


"Доступна для тестирования предварительная версия Java 7"
Отправлено Marbleless , 24-Фев-11 20:22 
>Слабо всё это на русский перевести, варианта до 1699 года?

Да, сейчас найду книгу "Издание указовъ для машинъ считальныхъ", посмотрю, какие там термины.


"Доступна для тестирования предварительная версия Java 7"
Отправлено bav , 25-Фев-11 00:13 
> Зато является более декларативной.

OMG, с каких это пор куча синтаксического мусора стала более декларативной?

> Не распарсил. Что это такое? Практический пример приведёте?

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


"Доступна для тестирования предварительная версия Java 7"
Отправлено amonym , 25-Фев-11 14:07 
>А зачем смешивать императивное и функциональное программирование,

Затем же зачем Вы смешиваете язык программирования и P машину.

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


"Доступна для тестирования предварительная версия Java 7"
Отправлено Валерий , 24-Фев-11 16:15 
Нормальные лямбды я видел только в CL. В большинстве остальных языков они если есть, то убогие.

С нормальными лямбдами должны быть лексические и динамические переменные, например.


"Доступна для тестирования предварительная версия Java 7"
Отправлено bav , 24-Фев-11 16:21 
> В большинстве остальных языков они если есть, то убогие.

От них требуются только две вещи:

1) Лексическое замыкание
2) Быть first-class value

Всё остальное маргинальщина и нужна только полутора лисперам.


"Доступна для тестирования предварительная версия Java 7"
Отправлено iZEN , 24-Фев-11 16:41 
>1) Лексическое замыкание

Какие варианты использования этого?

>2) Быть first-class value

Это что такое и зачем нужно?


"Доступна для тестирования предварительная версия Java 7"
Отправлено Marbleless , 24-Фев-11 20:29 
>>1) Лексическое замыкание
>Какие варианты использования этого?

http://en.wikipedia.org/wiki/Closure_(computer_science)
http://ru.wikipedia.org/wiki/Замыкание_(программирование)

>>2) Быть first-class value
>Это что такое и зачем нужно?

http://en.wikipedia.org/wiki/First-class_function
http://en.wikipedia.org/wiki/First-class_object
http://ru.wikipedia.org/wiki/Объект_первого_класса

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


"Доступна для тестирования предварительная версия Java 7"
Отправлено iZEN , 24-Фев-11 21:01 
>>>1) Лексическое замыкание
>>Какие варианты использования этого?
> http://ru.wikipedia.org/wiki/Замыкание_(программирование)

Всю жизнь пользовался этим в Java, оказывается "этого в ней нет". :))

>>>2) Быть first-class value
>>Это что такое и зачем нужно?
> http://ru.wikipedia.org/wiki/Объект_первого_класса

Чего-то там пространно объяснено.

Объект типа Class или типа Field или типа Method в Java это разве не то?

Чего нужно функциональщикам от Явы? Ведь в ней всё давно есть. Только записывается в тексте программ не так, как им нравится.


"Доступна для тестирования предварительная версия Java 7"
Отправлено Marbleless , 24-Фев-11 21:26 
>Всю жизнь пользовался этим в Java, оказывается "этого в ней нет". :))

Что, там есть полноценные замыкания? Имеющие доступ к локальным переменным? Безо всяких дополнительных костылей? Сколько на Жабе не пишу, а не знал.

>Объект типа Class или типа Field или типа Method в Java это разве не то?

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

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

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

3.Соответственно, синтаксис получается сложный и с типизацией придется колдовать.

Настоящей first-class function было бы нечто такое:

public static void main(String[] args) {
    function printstr = new function(String x) {
        System.out.println(x);
    }
    printstr("Hello, world!");
}


"Доступна для тестирования предварительная версия Java 7"
Отправлено iZEN , 25-Фев-11 19:37 
>Что, там есть полноценные замыкания? Имеющие доступ к локальным переменным? Безо всяких дополнительных костылей?

Какие костыли?

class CalculationWindow extends JFrame {
     private JButton btnSave;
     ...

     public final void calculateInSeparateThread(final URI uri) {
         // Выражение "new Thread() { ... }" представляет собой пример анонимного класса.
         new Thread() {
             void run() {
                 // Имеет доступ к финальным (final) переменным:
                 calculate(uri);
                 // Имеет доступ к приватным членам содержащего класса:
                 btnSave.setEnabled(true);
             }
         }.start();
     }
}

>1.Через отражение

А зачем в обычной программе непременно нужна интроспекция объектов? Ведь пятнадцать лет без неё как-то обходились.

>Настоящей first-class function было бы нечто такое: ...

Всё это красиво, но Java — это объектно-ориентированный язык, а не функциональный. В нём функции не являются классами, к ним нельзя применить оператор new, чтобы получить-вызвать "объект" функции с параметрами.


"Доступна для тестирования предварительная версия Java 7"
Отправлено Marbleless , 26-Фев-11 05:56 
>// Имеет доступ к финальным (final) переменным:
>// Имеет доступ к приватным членам содержащего класса:

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

>А зачем в обычной программе непременно нужна интроспекция объектов? Ведь пятнадцать лет без неё как-то обходились.

Именно! Поэтому в функциональных (и не только) языках first-class functions не требуют никакой интроспекции объектов, а реализуются гораздо проще.

>Всё это красиво, но Java — это объектно-ориентированный язык, а не функциональный. В нём функции не являются классами, к ним нельзя применить оператор new, чтобы получить-вызвать "объект" функции с параметрами.

И тем не менее в Java 7 уже что-то подобное (не знаю, правда, с какими именно ограничениями) будет.


"Доступна для тестирования предварительная версия Java 7"
Отправлено Мимо проходил , 03-Мрт-11 12:19 
>А замыкание - это когда еще к локальным переменным. Но поскольку в Java одну функцию внутри другой никак не определишь (до Java 7), то одна функция в контексте другой вообще существовать не может.

interface Function1<A, B> {
   public B apply(A a);
}

class Closure {
   public static void main(String[] args) {
       final Integer x = 10;

       Function1<Integer, Integer> add = new Function1<Integer, Integer>() {
           public Integer apply(Integer y) {
               return x + y;
           }
       };
       System.out.println(add.apply(2));
   }
}

Насколько я знаю, в Java 8 первоклассные функции реализуют как сахар для SAM.


"Доступна для тестирования предварительная версия Java 7"
Отправлено filosofem , 24-Фев-11 21:38 
>Чего-то там пространно объяснено.
>Объект типа Class или типа Field или типа Method в Java это разве не то?

Имелось в виду, что объектом первого класса должна быть функция. Ссылку вам не ту дали, читать здесь
http://en.wikipedia.org/wiki/First-class_function

Конечно можно и на Джаве многое имитировать, и замыкания и функции первого класса. Но есть нюанс: данные концепты вводились для упрощения написания и понимания кода, а в случае имитации получается все равно громоздко обычно.


"Доступна для тестирования предварительная версия Java 7"
Отправлено Анон , 24-Фев-11 18:28 
По мне так лямбды - это пережиток становления ООП. Все примеры что я натыкался (скажем, в SICP) более грамотно реализуются через объекты. А объекты в свою очередь - можно хоть на С через указатель на контекст передвать - элегантно, лакончино и просто.
Так что не понимаю откуда столько фанбойского визга про эти замыкания. Хотя замечу, что я особо в функциональщину не погружался и в своё время поддался на совращение господином Страуструбом.

"Доступна для тестирования предварительная версия Java 7"
Отправлено umbr , 24-Фев-11 19:58 
>фанбойского визга

Тут главное повизжать ("Смотрите, какой я умный"), неважно  о чём.


"Доступна для тестирования предварительная версия Java 7"
Отправлено Stax , 24-Фев-11 22:01 
В ООП обычно не получается "элегантно, лаконично и просто" писать код, который работает со различными структурами, но при этом должен выполнятся лениво (в результирующей структуре вычисляться по мере обращения к соответствующему элементу). С помощью функциональных конструкций сделать так, чтобы все с одной стороны выглядело очень просто и код писался, как просто работающий с данными, но вычислялся лениво - проще простого. Простота и ускорение в одном флаконе, причем применимо это практически везде.

"Доступна для тестирования предварительная версия Java 7"
Отправлено Анон , 25-Фев-11 04:22 
Конкретные примеры где это лучше ООП? По мне так можно вызвать метод объекта по необходимости. То что "как просто работающий с данными" мне опять таки не ясно зачем это нужно и почему в SICP на это так дико фапали. По мне так гораздо логичнее и правильнее чётко разделять данные и функции. Вообщем не понимаю я профита от этого всего.

"Доступна для тестирования предварительная версия Java 7"
Отправлено oops_ , 25-Фев-11 15:05 
может просто не работать в ООП стиле там где это не нужно?

"Доступна для тестирования предварительная версия Java 7"
Отправлено bav , 25-Фев-11 00:06 
> По мне так лямбды - это пережиток становления ООП

Студент? Торба ООП уже давно облезла и прохудилась, а вы с ней всё носитесь. Расширяй кругозор, мой тебе совет.


"Доступна для тестирования предварительная версия Java 7"
Отправлено Аноним , 24-Фев-11 16:04 
Не, ну не козлы ли? Знай себе выпускают закрытую версию с отмазами "мы используем некоторые закрытые библиотеки, так что..", предлагая трудиться над переписыванием сложных (иначе не пришлось бы использовать сторонные технологии) проекту IcedTea. Т.е. оракл будет просто выпускать то, что ему нравится, а в это время редхату с эпплом предлагается молча вбухивать кучу денег в развитие IcedTea, а кому-то из сторонних разработчиков и нахаляву трудиться, чтобы сделать джаву немного посвободнее?

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

http://open.cnews.ru/news/top/index.shtml?2010/11/09/415237 <-- как в свое время путь развития джавы в оракле разошелся с мнением сообщества, так раскол продолжается глубже и глубже.. На мнение ASF при выпуске Java 7 они уже положили..


"Доступна для тестирования предварительная версия Java 7"
Отправлено Аноним , 24-Фев-11 16:21 
Я просто разрываюсь - что же лучше в новом свете - OpenJDK или Mono???

"Доступна для тестирования предварительная версия Java 7"
Отправлено Anonymousapiens , 24-Фев-11 16:28 
Если ты такой нервный - используй С++

"Доступна для тестирования предварительная версия Java 7"
Отправлено Аноним , 24-Фев-11 17:06 
> Если ты такой нервный - используй С++

Ну я уже. Но при этом восхищаюсь Java и тем более C#. Для обоих есть православные GPLные реализации, а потому выбрать крайне сложно - за обоими стоят очень серьезные аргументы и области применения.


"Доступна для тестирования предварительная версия Java 7"
Отправлено Аноним , 24-Фев-11 17:55 
Чем там восхищаться? Весь этот сонм недоязычков от жавы с шаром до питона не умеет банальную компиляцию в нативный код, следовательно обречены тормозить и жрать память. А так называемый "портабельный байткод" поощряет наплевательски относиться к доступности исходников и сборочным системам, а то и вообще не выкладывать исходники, анонсируя при этом что распространяется "под gpl".

"Доступна для тестирования предварительная версия Java 7"
Отправлено Tiv , 24-Фев-11 19:32 
re> Весь этот сонм недоязычков от жавы с шаром до питона не умеет банальную компиляцию в нативный код, следовательно обречены тормозить и жрать память.
Откидывая реплики про "сомнительность" нужно уточнить
1. Большенство JVM имеют JIT так что код более чем найтивный получается
2. У тех, кто не умеет JIT, например встроенная в RDBMS Oracle JVM версии ниже 11.1 встречаются штуки типа Oracle JAccelerator он же Java NCOMP. Данная штука превращает class файлы в .c файлы и собирает из них .so/.dll. .c aайлы можно посмотреть.
re> А так называемый "портабельный байткод" поощряет наплевательски относиться к доступности исходников и сборочным системам, а то и вообще не выкладывать исходники, анонсируя при этом что распространяется "под gpl".
Каким образом?

Ну и конечно самый портабельный и надежный код просто обязан содержать что то типа
#  ifdef NETWARE
#  else
#  ifdef FAKE_THREADS
#  else
#    ifdef WIN32
#    else
#      ifdef OS2
#      else
#        ifdef I_MACH_CTHREADS
#          if (defined(NeXT) || defined(__NeXT__))
#          endif
#        else /* Posix threads */
#          ifdef I_PTHREAD
#          endif
#        endif /* I_MACH_CTHREADS */
#      endif /* OS2 */
#    endif /* WIN32 */
#  endif /* FAKE_THREADS */
#endif    /* NETWARE */
#endif /* USE_5005THREADS || USE_ITHREADS */
Тут про сборку заботятся обязательно:)


"Доступна для тестирования предварительная версия Java 7"
Отправлено Ytch , 24-Фев-11 23:04 
Первая же фраза в заметках по ссылке: "Для запуска Ngen.exe необходимо обладать правами администратора." Это как вообще? Нормально?
Остальной вагон заметок, примечаний и оговорок также говорит о том, что нативным кодом (как его понимают большинство людей) это назвать можно только чисто формально. Обычное кеширование результатов компиляции со всеми вытекающими, и то, что кешируется именно машинный код, а не какой-то другой, ничего, по сути, не меняет.

"Доступна для тестирования предварительная версия Java 7"
Отправлено rip , 24-Фев-11 23:30 
> Чем там восхищаться? Весь этот сонм недоязычков от жавы с шаром до питона не умеет банальную компиляцию в нативный код, следовательно обречены тормозить и жрать память. А так называемый "портабельный байткод" поощряет наплевательски относиться к доступности исходников и сборочным системам, а то и вообще не выкладывать исходники, анонсируя при этом что распространяется "под gpl".

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


"Доступна для тестирования предварительная версия Java 7"
Отправлено uZver , 24-Фев-11 16:38 
>[оверквотинг удален]
> "мы используем некоторые закрытые библиотеки, так что..", предлагая трудиться над переписыванием
> сложных (иначе не пришлось бы использовать сторонные технологии) проекту IcedTea. Т.е.
> оракл будет просто выпускать то, что ему нравится, а в это
> время редхату с эпплом предлагается молча вбухивать кучу денег в развитие
> IcedTea, а кому-то из сторонних разработчиков и нахаляву трудиться, чтобы сделать
> джаву немного посвободнее?
> Нормальная такая позиция, "жрите то, что вам сан в свое время открыл,
> а мы будем выпускать то, что нам требуется под брендом "Java",
> а вы трудитесь, может когда-нибудь и доползете до нашего уровня со
> своими открытыми технологиями".

Apple вкладывается в развитие OpenJDK и вливает туда свой код. А проприетарная сборка java была и у Sun. Ничего пока не поменялось.

Только Sun обещала сделать Java 7 полностью открытой. Oracle такого обещания не давал.


"Доступна для тестирования предварительная версия Java 7"
Отправлено Stocker , 24-Фев-11 16:40 
Ахренеть, заплатили 9 с половиной миллиардов и не выдали всё тут же анонимусу нахаляву. Планета в шоке.

"Доступна для тестирования предварительная версия Java 7"
Отправлено KDE , 24-Фев-11 16:26 
чую не будет единого стандарта JDK != OpenJDK и чем дальше тем больше...
и спор ORACLE vs GOOGLE тому подтверждение

диалекты Java


"Доступна для тестирования предварительная версия Java 7"
Отправлено bvf , 24-Фев-11 17:53 
Не паникуйте. Сделайте глубокий вдох и успокойтесь. ТО что разные имплементации ява машины имеют свои особенности никого никогда не смущало. Но есть неизменное и единое ядро которое одинаково работает у всех. У ИБМ есть своя очень сильно отличающаяся ява, но однако она очень интенсивно используется. Сущетсвует более десятков разных неодинаковых ява машин, и что? Сановская ява дефакто стандарт. В OpenJDK весь код будет соответствовать оракловской яве за исключением тех частей на которые патенты принадлежат другим компаниям и которые ораклы не могут открыть так как нарушат патенты третьих фирм. В чем паника? Дышите спокойнее.

"Доступна для тестирования предварительная версия Java 7"
Отправлено oops_ , 24-Фев-11 19:21 
и все это только для того, чтобы не развивать компонентный Паскаль.

"Доступна для тестирования предварительная версия Java 7"
Отправлено bvf , 24-Фев-11 20:22 
> и все это только для того, чтобы не развивать компонентный Паскаль.

freepascal вполне себе развивается. а вообще ява была разработана под сильным влиянием оберона. Паскаль вообще-то принадлежит Вирту вот он его и развивает.

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


"Доступна для тестирования предварительная версия Java 7"
Отправлено Аноним , 24-Фев-11 23:00 
> Паскаль вообще-то принадлежит Вирту вот он его и развивает.

Насколько я знаю, он давно и прочно забил на Паскаль, обнаружив в нем столько недостатков, что просто создал новые языки - Модулу, Оберон


"Доступна для тестирования предварительная версия Java 7"
Отправлено kshetragia , 25-Фев-11 05:35 
Component Pascal != Free Pascal. И для него к сожалению есть только BlackBox, полностью заточенный под винду. Это наверное один из немногих языков, о котором читаешь и хочется писать на нем.

"Доступна для тестирования предварительная версия Java 7"
Отправлено bvf , 25-Фев-11 13:46 
> Component Pascal != Free Pascal. И для него к сожалению есть только
> BlackBox, полностью заточенный под винду. Это наверное один из немногих языков,
> о котором читаешь и хочется писать на нем.

Согласен оберон2,он же компоненнтный паскаль,великолепный язык, но какая разница от замечательного языка если он никому не нужен?


"Доступна для тестирования предварительная версия Java 7"
Отправлено oops_ , 25-Фев-11 15:08 
Инертность.. Даже казалось бы у активной социальной группы, коими по идее должны являться программисты. Реально же как я это вижу.. Нормальный компилятор Оберона и можно будет смело закапывать и Java и .Net

"Доступна для тестирования предварительная версия Java 7"
Отправлено bvf , 25-Фев-11 21:19 
> Инертность.. Даже казалось бы у активной социальной группы, коими по идее должны
> являться программисты. Реально же как я это вижу.. Нормальный компилятор Оберона
> и можно будет смело закапывать и Java и .Net

ну так вперед закапывайте :) Я буду только вам благодарен.