Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Java 1.5 code name "Tiger", что нового 
:(
    Опции темы
AntonSaburov
Дата 2.12.2003, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Почитал я немного про JAVA 1.5, прослезился и решил написать.

Оригинал интервью можно посмотреть здесь
New Java Language Features in J2SE 1.5

Что нового намечается в JAVA 1.5 ?

Данная информация получена из интервью двух ведущих разработчиков платформы JAVA - Джошуа Блока (Joshua Bloch) и Нила Гафтера (Neal Gafter)

Хотелось бы выделить несколько на мой взгляд ключевых моментов. Итак:

1. В новой релаизации JAVA (кодовое название Tiger) будет введена возможность типизирования списков. Т.е. если вы используете java.util.List для хранения строк (String), то можно будет описать список как хранилище строк (запись такая - List<String>) и компилятор будет сам отслеживать корректность обращения к элементам списка - приведение типа в этом случае не потребуется.

2. Будет введен аналог оператора foreach, который введен например в C#. Точный формат записи не приведен, но я думаю, что скорее всего синтаксис будет очень похож. Будет служить как и в C# для перебора массива, списка без использования индексов или итераторов для доступа к элементам.

3. Будут введены типы ENUM - т.е. теперь для перечисления констант не надо будет заводить класс.
Учтите, что теперь слово enum станет зарезервированным и использовать его для имен нельзя. Исправляйте свои коды.

4. Будет введен autoboxing/unboxing. Т.е. теперь для того, чтобы поместить в тот же список число int его не надо будет приводить к объекту Integer (многие наверно сталкивались с таким - list.put(new Integer(5)). Теперь это будет делаться автоматически.

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

6. Разработчики JAVA собираются некоторые константы перевести из классов в enum, но это будет сделано только там, где это реально надо. Но будьте бдительны smile.gif

7. Будет введен класс StringBuilder. В отличии от StringBuffer, который является тредсейфным и потому достаточно медленно работает, StringBuilder будет не тредсейфным, что значительно ускорит работу со строками.

8. Будут введены новые возможности ВВОДА/ВЫВОДА - в частности функция printf. (Тайная мечта многих программистов - сложно выводить что-либо на консоль тем, кто учился на C, Pascal, Fortran и прочая).

9. Будет введена поддержка функциональности "WebService" и вообще метаданных. Разработчики бещают, что набор аттрибутов дял метаданных будет сопоставим с .NET

10. Ожидаемая бетта (или где-то в конце этого года. Будем ждать.

10. Не будет введено ключевого слова const,

11. Не будет делегатов - считают, что много сложностей и что немаловажно, при таком подходе вызов метода "уходит" из под контроля объекта, который вызвал делегат. Вообщем не хотят. Может это и правильно.

12. Также не будут вводится дефолтовые параметры для конструкторов


Вот в принципе и все, что мне лично хотелось бы перечислить.
Спасибо за внимание.
PM MAIL WWW ICQ   Вверх
Sun
Дата 2.12.2003, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 8
Всего: 48



Достаточно приятные изменения smile.gif
Видно что прилагаются усилия к популяризации языка, хотя и достаточно косметические. Интересно, будут ли внесены изменения в саму виртуальную машину, чтобы сделать ее более производительной? Или проблемы производительности и дальше придеться решать наращиванием аппаратной мощности?


--------------------
Account removed
PM MAIL   Вверх
AntonSaburov
Дата 2.12.2003, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



В Java Specification Request есть такое пункт:

C8) Good performance of generic code. Code written to use the generics feature should not be a lot slower or a lot more memory-intensive than non-generic code. Using ten percent more space or time than non-generic code may be acceptable; using twice the space or time is not.

Так что не думаю, что станет гораздо быстрее. Скорее наоборот smile.gif
PM MAIL WWW ICQ   Вверх
foRaver
Дата 2.12.2003, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 561
Регистрация: 6.7.2003
Где: Düsseldorf

Репутация: нет
Всего: 3



спасибо, я думаю эти изменения только улучшат авторитет языка и будут реальным противником для C#, хотя в этом кажется никто никогда не сомневался ! smile.gif
PM MAIL WWW ICQ YIM   Вверх
AntonSaburov
Дата 3.12.2003, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Еще по поводу фактически теплэйтов для JAVA (1-й пенкт в самом первом сообщении)

Ознакомился я тут с документом:
"Adding Generics to the Java Programming Language:
Public Draft Specification, Version 2.0"

Документ описывает как надо синтаксически строить типизированные классы, методы, эксепшены и выражения. Весь документ привести достаточно проблематично - там более 20 страниц.

Самое главное - тем, кто работал с теплэйтами в С++ будет не сложно понять синтаксис. Например:

Vector<String>
Collection<Integer>

Но Vector<int> - по спецификаци не проходит. Низя smile.gif. Но скорее всего для вставки в объявление Vector<Integer> будет использован autoboxing и потому вставлять целое, думаю, можно будет прямо так - add(101) - число будет автоматом приводится к Integer.

Вот еще пример:
Код

interface ConvertibleTo<T> {
   T convert();
}

class ReprChange<A extends ConvertibleTo<B>,
                             B extends ConvertibleTo<A>> {
   A a;
   void set(B x) { a = x.convert(); }
   B get() { return a.convert(); }
}


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

PM MAIL WWW ICQ   Вверх
Sun
Дата 3.12.2003, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: 8
Всего: 48



Забавная ситуация. Сначала компания Sun стремилась сделать Java как можно проще и не внесла кучу фичек из C++, а теперь идет обратным путем, делая Java все больше похожим на С++. Интересно что на очереди? Перегрузка операторов? Препроцессор? Множественное наследование? cool.gif


--------------------
Account removed
PM MAIL   Вверх
ElectricalStorm
Дата 4.2.2004, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 5
Всего: 9



вот примеры использования

JDK 1.5 has some very useful enhancements.
Autoboxing

1. Java's distinction between primitive types and their equivalent Object types was painful. Fortunately, with the advent of autoboxing, that will become a fading memory.

Код

// automatically convert one type to another
Integer integer = 1;
System.out.println(integer);

// mix Integer and ints in the same expression
int i = integer + 3;
System.out.println(i);


Sample output:
1
4

2.Collections
The collections framework is greatly enhanced by generics, which allows collections to be typesafe.

Код

LinkedList<String>  stringList  = new LinkedList<String>();
stringList.add("of");
stringList.add("course");
stringList.add("my");
stringList.add("horse");

Iterator<String> iterator = stringList.iterator();
  while(iterator.hasNext())
     System.out.print(iterator.next() + " ");


Sample output:
of course my horse


3.Enhanced for loop
Код

int array[] = {1, 2, 3, 4};
int sum = 0;
for (int e : array)  // e is short for element; i would be confusing
   sum += e;
System.out.println(sum);


Sample output:
10

4.Enums

Java programmers rejoice with the availability of enums.

Код

enum Suit { clubs, diamonds, hearts, spades };
for (Suit suit : Suit.values())
   System.out.println(suit);


Sample output:
1
2
3
4

Here is a more complex example.
Код

enum Coin {
   penny(1), nickel(5), dime(10), quarter(25);
   Coin(int value) { this.value = value; }
   private final int value;
   public int value() { return value; }
};
for (Iterator<Coin> i = Arrays.asList(Coin.values()).iterator();
    i.hasNext(); ) {
   Coin coin = i.next();
   System.out.print(coin + " ");
}


Sample output:
penny nickel dime quarter
Importing Static Members

5.No longer is it necessary to write

Math.abs(x) Math.sqrt(x) Math.max(a, b)
We can now import once and write it like this:

Код

double x = 16.0, a = 2.2, b = 3.3;
System.out.println(abs(x));
System.out.println(sqrt(x));
System.out.println(max(a, b));


Sample output:

16.0
4.0
3.3

6. Variable Arguments
This is just using ellipses as syntactic sugar for arrays.

Код

public class Test {
 // main() looks different, doesn't it?
 // try changing the runtime arguments above and rerun
 public static void main(String... args) {
    System.out.println(args.length + " arguments");
 }
}

Sample output:

3 arguments
Word Frequency Counter


7.Based on Josh Bloch's word frequency counter, corrected so that it works.

Код

import java.text.*;
import java.util.*;

public class Freq {
   public static void main(String args[]) {
      Map<String, Integer> m = new TreeMap<String, Integer>();
      for (String word : args) {
          Integer count = m.get(word);
          if (count==null)
              count = 0;
          m.put(word, count + 1);
      }
      System.out.println(m);
   }
}



--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
ElectricalStorm
Дата 4.2.2004, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 547
Регистрация: 22.1.2004

Репутация: 5
Всего: 9



Самое главное забыл smile.gif
взято вот отсюда http://zamples.com/JspExplorer/samples/sam...plesJDK1_5.html


--------------------
Нужно знать инструмент, которым пользуешься
PM MAIL   Вверх
Sardar
  Дата 4.2.2004, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 4
Всего: 317



У меня сложилось впечатление, что сам байткод не изменится.
Пункты:
1 - автоматизировали приведение к типу
3 - по моему результатом будет класс
4 - обьекты оболочки по прежнему будут создаватся, что плохо ИМХО
Переменное количество аргументов в функциях - интересно а сам массив где будет создаватся, в стеке?
Пример с ConvertibleTo - что то мощное... и возможно ведущее к ошибкам компиляции...
Теперь компилятор будет больше делать рутинной работы.

Но сердце радуется любым улучшениям языка, глубоко меня изменившего biggrin.gif.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
foRaver
Дата 6.2.2004, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 561
Регистрация: 6.7.2003
Где: Düsseldorf

Репутация: нет
Всего: 3



И ещё несколько довольно приятных нововведений: теперь JRE весит всего 88 Mb (до этого 126 Mb), J2SDK - 306 Mb (до этого 425 Мb). Вот так вот.

Чуть не забыл: отличия между Java 1.5 и предыдущими версиями (в плане синтаксиса и т.п) можете посмотреть сдесь: Java 1.5 in a Nutshell (not O'Reillie) from Sun
(очень даже меня это порадовало biggrin.gif)
PM MAIL WWW ICQ YIM   Вверх
DarkDS
Дата 7.2.2004, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



Цитата(foRaver @ 6.2.2004, 18:30)
И ещё несколько довольно приятных нововведений: теперь JRE весит всего 88 Mb (до этого 126 Mb), J2SDK - 306 Mb (до этого 425 Мb). Вот так вот.

Чуть не забыл: отличия между Java 1.5 и предыдущими версиями (в плане синтаксиса и т.п) можете посмотреть сдесь: Java 1.5 in a Nutshell (not O'Reillie) from Sun
(очень даже меня это порадовало biggrin.gif)

Хммм.. И где ты такие большие СДК находил? У меня вот 1.3.1_10 весит всего 60 метров.
PM MAIL   Вверх
DarkDS
Дата 7.2.2004, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



С java.sun.com - download:
Цитата

Java™ 2 SDK, Standard Edition 1.4.2_03
Windows Platform
        Windows Offline Installation, Multi-language (j2sdk-1_4_2_03-windows-i586-p.exe, 48.30 MB) 

PM MAIL   Вверх
foRaver
  Дата 11.2.2004, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 561
Регистрация: 6.7.2003
Где: Düsseldorf

Репутация: нет
Всего: 3



Цитата(DarkDS @ 7.2.2004, 00:39)
Хммм.. И где ты такие большие СДК находил? У меня вот 1.3.1_10 весит всего 60 метров.

Это у тебя 1.3.1_10 весит, а столько у меня 1.4.2_03 весило. В этой версии было добавленно больше классов, поэтому так и весит. Далеко за примером ходить ненадо: стояло у меня на компе.

Вот только ещё одня очень хорошая особенность J2SDK 1.5 это быстродействие! Да, именно: быстродействие. Программы просто летають по сравнению с предыдущими вериями. К томуже SUN видимо изменили библиотеки AWT и Swing, потомучто программы с GUI выглядят теперь совершенно по другому. Более приятно, так сказать inlove.gif

Na самом деле, лучший способ убедиться в моих словах, просто поставить себе J2SDK 1.5 и не мучаться. Я очень рад на самом деле и советую другим thumbs-up.gif
PM MAIL WWW ICQ YIM   Вверх
DarkDS
Дата 11.2.2004, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 748
Регистрация: 6.5.2003
Где: Таллинн, Эстония

Репутация: 11
Всего: 16



Цитата(foRaver @ 11.2.2004, 17:31)
Это у тебя 1.3.1_10 весит, а столько у меня 1.4.2_03 весило. В этой версии было добавленно больше классов, поэтому так и весит. Далеко за примером ходить ненадо: стояло у меня на компе.

АХа... Только при данлоаде с Сана он предлагает скачать всего _48_ метров (посмотри на пост выше)
PM MAIL   Вверх
foRaver
Дата 11.2.2004, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 561
Регистрация: 6.7.2003
Где: Düsseldorf

Репутация: нет
Всего: 3



хм, странно... попробуй поставить с помощью полной онлине инсталляции.. может добьёшcя эффекта, но своим глазам я доверяю.
PM MAIL WWW ICQ YIM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0959 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.