LINUX.ORG.RU

Стандартный набор OCaml'щика ;)


0

0

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

Небольшая экскурсия (начиная с самого верхнего окна):
- Topcameleon --- графическая интерактивная система (toplevel);
- Doc box --- браузер документации, сгенерированной ocamldoc;
- OCamlCVS --- GUI к CVS;
- Cameleon --- самое главное окно (не считая конечно XEmacs ;)) ---
IDE, которая совмещает кучу разных утилит (например OCamlCVS) +
расширяется через плагины (например общается c XEmacs через
gnuclient);
- XEmacs --- самая главная тулза! ;)))

За кадром остались:
- Zoggy --- построитель графического интерфейса (с использованием
LablGTK);
- DBForge --- генератор кода для доступа к нескольким видам СУБД,
посредством задания схемы (реализован еще не полностью);
- Epeire --- GUI к OCaml debugger;
- MLChat --- графический чат для разработчиков;
- Omom --- графический генератор Makefile'ов;
- Report --- графический описатель/генератор кода для доступа к XML
документам.

Все перечисленные тулзы цепляются к Cameleon с помощью плагинов.

Все это крутится под: Debian Woody R3.0 + IceWM без всяких излишеств
;)) (типа Gkrellm, обоев, и прочих погремушек-свистулек).

Ну теперь, можете пинать... :)))

>>> Просмотр (1024x768, 54 Kb)



Проверено: maxcom

Ответ на: комментарий от yurban

Как большой спец - просветите, чем lazy не угодил?

И еще - а почему метод не может изменять состояние параметра? Иногда даже очень хочется и нужно это сделать. Другое дело, что он это должен делать только через методы этого параметра. Чтобы публичных данных не было. Но это везде в книжках написано. Если хотите поругать жабу за возможность публичных данных - ругайте. Наверное, можно было их запретить. Ну иногда так хочется соптимизировать...

svu ★★★★★
()

2svu

lazy() не угодил способом избавления от побочного эффекта.

<<И еще - а почему метод не может изменять состояние параметра? Иногда даже очень хочется и нужно это сделать. Другое дело, что он это должен делать только через методы этого параметра. Чтобы публичных данных не было. Но это везде в книжках написано. Если хотите поругать жабу за возможность публичных данных - ругайте. Наверное, можно было их запретить. Ну иногда так хочется соптимизировать... >>

метод и изменяет состояние параметра.

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

>>> class E { public static void changeE() { s = "changed"; } public static String getE() { return s; } private static String s = "ok"; } } >>>

Вы хоть понимаете что такое static? Вы хоть понимаете, что если JavaBean по спецификации обязан быть сериализуем, то какие тут "статики"? Гослинга хоть читали? Признайтесь честно.

NikS
()

2svu ... кстати их, наверное, лучше было запретить

yurban
()

AC, не позорьтесь, нет здесь никакого побочного эффекта:

class E {

   public void changeE() {
      s = "changed";
   }
   public String getE() {
      return s;
   }
   private String s = "ok";
}

class Closed {

   private E e;
    
   public Closed() {
      e = new E();
   }
   public void setX(int XV) {
      e.changeE();
      x = XV;
   }
   public int getX() {
      return x;
   }
   private int x;
}

public class C {
public static void main(String[] Args) {
E e = new E();
System.out.println(e.getE());
Closed c = new Closed();
c.setX(101);
System.out.println(e.getE());
}
} 


Будет:
ok
ok

Позор!;-((

NikS
()

Ну, функциональщики, здорово вас тут NikS с последним примером умыл. Я тоже проверил. Действительно будет
ok
ok

anonymous
()

здорово, мил человек!

а этот проверь:

class Demo { int i; static void m3(Demo d) { d.i++; System.out.println(d.i); } public static void main(String[] args) { Demo demo = new Demo(); System.out.println(demo.i); m3(demo); System.out.println(demo.i); } }

yurban
()

да причем тут JavaBeans!!!

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

если, уважаемый NikS, скажет всем своим подчиненным в конторе (которая пишет большые проекты): "Ребята, пишем код как следует и всех правил придерживаемся" - то все уних будет хорошо. До тех пор пока один возмет да и с оптимизирует написание публичными данными (согласен с svu - иногда очень охота по-быстрому), а второй заиспользует их как ему охота.

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

>> NikS уже приводил тебе пример.

На каждого мудреца довольно простоты

Еще раз спрашиваю - как изменяется состояние объекта класса C, который в данном случае является программой-"монитором".

class Demo // для JavaBean нужна еще сериализация, интроспекция & etc. { private int i; public void setI(int i) { this.i = i; } public int getI() { return i; } public void m3() { i++; System.out.println(i); } }

class C { public static void main(String[] args) { Demo demo = new Demo(); demo.setI(2); System.out.println(demo.getI()); demo.m3(); System.out.println(demo.getI()); } }

Столь одаренного и многоопытного Java-программиста, как этот yurban прошу проделать тоже самое со многими JavaBeans Demo, работающими в трэдах. (А то Луговский тут по поводу нитей на одном форуме распинался.)

Кстати, yurban, а Вы читали F&H? У меня появились сомнения.

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

>> До тех пор пока один возмет да и с оптимизирует
>> написание публичными данными

А можно и молотком по монитору врезать!

1. Вы 3 постулата ООП знаете?
2. Вы знаете четкое определение класса и объекта?

Тогда вопросы на вшивость:

1. Что кроме инстанции (экземпляра) класса в Java является объектом?
2. Могут ли в пакете быть сущности, отличные от интерфейсов+классов и других пакетов?

NikS
()

<Вы хоть понимаете что такое static?>

А вы думаете, нет?

<Вы хоть понимаете, что если JavaBean по спецификации обязан быть сериализуем, то какие тут "статики"? >

И что, мне требовать, чтобы все объекты были сериализуемы?
Ок, пусть будет так (к точкам с запятой, ради бога, не придирайтесь):
-------------------------------------------------------------------
class E {
 public E() {
   s = new String("ok");
 }
 public void changeE() {
   s = "changed";
 }
 public String getE() {
   return s;
 }
 private String s = null;
}

//Ecли можно использовать синглетоны.
class ESingleton {
  public static E e() {
    if(e_i == null) {
      e_i = new E();
    }
    return e_i;
  }
  private static E e_i = null;
}

class Closed {
 public Closed() {}
 public void setX(int XV) {
  ESingleton.e().changeE();
  x = XV;
 }
 public int getX() {
  return x;
 } 
 private int x;
}

class C {
 public static void main(String[] Args) {
   System.out.println(ESingleton.e().getE());
   Closed c = new Closed();
   c.setX(101);
   System.out.println(ESingleton.e().getE());
 }
}
----------------------------------------------------------------

<AC, не позорьтесь, нет здесь никакого побочного эффекта:>

Уважаемый автор монографий, хотелось бы, чтобы вы не делали идиотов ни из своих оппонентов, ни из себя самого. Что такое scope здесь все прекрасно знают.

<Будет:
ok
ok>

Естественно.

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

AC
()

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

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

>> И что, мне требовать, чтобы все объекты были сериализуемы?

А как же, молодой человек! Все JavaBeans с интроспекцией обязаны быть сериализуемы. Только в _данном_ _конкретном_ случае я не использовал сериализацию. Если Вы это не поняли, то Вы вооще не знаете, что такое сериализация. Так что Вы просто плаваете в Java.

(Кстати, В entity EJB вОООще нельзя, чтобы класс ключа не был сериализуем. Если Вы этого не знаете, то Вам позор.)

>> поймите, побочный эффект _возможен_,

Плохому тианцору всегда кое-что мешает.

А вот некто Э.Р.Мулдашев утверждает, что число пи _возможно_ равно 3.(3)

А вот Гослинг возражает: Math.PI=3.1415926....

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

>> Еще можно попробовать запретить делать ошибки.

Если я напишу final public static diouble MyMath.PI=3.3333333

кто мне это запретит? РАН? ВАК? Комиссия по борьбе с лженаукой?

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

NikS
()

2NikS

<<А можно и молотком по монитору врезать!>>

я думаю можно, только зачем?

<< 1. Вы 3 постулата ООП знаете? 2. Вы знаете четкое определение класса и объекта?

Тогда вопросы на вшивость:

1. Что кроме инстанции (экземпляра) класса в Java является объектом? 2. Могут ли в пакете быть сущности, отличные от интерфейсов+классов и других пакетов? >>

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

Сколько по Вашему ошибок в больших проектов такого рода возникают?

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

Вы не ответили на мой вопрос:

"Могут ли в пакете быть сущности, отличные от интерфейсов+классов и других пакетов?"

Переходы на личности оставьте при себе. Я на них не отвечаю.

>> Сколько по Вашему ошибок в больших проектов такого рода возникают?

На WebSphere Studio или Sun ONE Studion? 0.

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

Вы не ответили на мой вопрос:

"Могут ли в пакете быть сущности, отличные от интерфейсов+классов и других пакетов?"

Переходы на личности оставьте при себе. Я на них не отвечаю.

>> Сколько по Вашему ошибок в больших проектов такого рода возникают?

На WebSphere Studio или Sun ONE Studion? 0.

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

Хе, так это не lazy надо переписывать, а весь класс.

Вторую мысль не понял. Если класс B меняет объект класса A через его, А , методы - чего ж тут за проблема?

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

Нет тут никаких проблем.

По иронии судьбы был я во Франции - никто там CAML особо не юзает, хотя околонаучные правительственные лягушатные чинуши пытались везде внедрить CAML (наряду со словом "ординатюр", хотя местные все равно говорили "компьютер".)

Ну хочется и форумным людям сказать, что мы элита, избранные, ибо знаем такую крутую экзотику как Caml, а Java - это попса.

NikS
()

2svu

<<Хе, так это не lazy надо переписывать, а весь класс.>>

да весь класс.

<<Вторую мысль не понял. Если класс B меняет объект класса A через его, А , методы - чего ж тут за проблема?>>

проблемы тут нет, все правильно.

проблема была в том, что NikS утверждал, что проблемы "побочного эффекта" (ПЭ) в Java нет. После предъявленного примера с ПЭ на Java, началось не пойми что и про JavaBeans и про ООП и пр.

yurban
()

2NikS

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

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

>> проблема была в том, что NikS утверждал, >> что проблемы "побочного эффекта" (ПЭ) в Java нет

Я не говорил что ПЭ в Java нет - наоборот я переработал Pascal пример из F&H. Я показал, что проблема ПЭ в Java сводится на нет. Что эта проблема ПЭ в императивных языках дутая. Что все крупные фирмы выбрали Java, а не Caml.

Я стал сомневаться в том, что Вы читали F&H и владеете лямбда-исчислением хотя бы в объеме курса М.Броя.

Кстати, Вы так и не ответили на мой вопрос про пакеты в Java.

NikS
()

Проблема это дутая для проектов порядка HelloWorld и чуть выше.

книгу F&H я не читал. Я читал Ф&Х (навсякий случай пишу, что это русский перевод).

на все Ваши вопросы про пакеты и пр. я ответил в постинге о Вашем возрасте.

yurban
()

<А как же, молодой человек! Все JavaBeans с интроспекцией обязаны быть сериализуемы.>

Ну и. В приведенном мной выше примере _некорректно_ меняется состояние объекта сериализуемого (гипотетически) класса E. Внимание, вопрос -- разрешено ли в JavaBeans использование синглетонов. Если да, то все ваши разговоры про _принципиальное_ отсутствие ПЭ в JavaBeans -- в пользу бедных.

<(Кстати, В entity EJB вОООще нельзя, чтобы класс ключа не был сериализуем. Если Вы этого не знаете,>

Да я только знаком с EJB и ими не пользуюсь -- у меня другая работа. А вы _досконально_ знаете JAI и Java3D? Если нет -- позор вам, вы не знаете Java.

<По иронии судьбы был я во Франции - никто там CAML особо не юзает, >

Мы наверное в разных Франциях были. Вот я здесь живу и работаю, и _хренова_ туча народу вокруг юзает именно что (o)caml.

<наряду со словом "ординатюр", хотя местные все равно говорили "компьютер>

И говорят все, что характерно, именно что "ordinateur". Ни разу за 3 года не встречал _француза_, говорящего "компьютер" -- он просто этого не выговорит, они искажают почти _все_ термины.

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

>> ... и чуть выше.

Да ну! Неужели мне платят за Hello, World? Или за "чуть выше"? А что это "чуть выше"?

>> на все Ваши вопросы про пакеты и пр. я ответил >> в постинге о Вашем возрасте.

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

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

singleton - бяка с точки зрения JavaBeans. Хотя могу ошибаться. (хотя не должен, все-таки brainbench MVP for Java 1:)

EJB - стандартная часть J2EE. Java3D/JAI - расширения. Ниже рангом. Можно не знать:)

Наверное, Вы живете в академической Франции...

svu ★★★★★
()

<. Я показал, что проблема ПЭ в Java сводится на нет.>

Пока что вы ничего не показали. Вы показали _один_ _конкретный_ пример. Точно так же я могу написать
void f() {
char* mem = new char[1000];
delete[] mem;
}
и сказать, что проблема управления и утечек памяти в языках без сборки мусора сводится на нет. Действительно, достаточно всего-навсего освобождать выделенную память. А если кто этого не делает -- так можно и молотком по монитору, дураков в нормальных фирмах не держат.

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

>> А вы _досконально_ знаете JAI и Java3D

Вопрос в знании _основ_ Java. SCP получают за _основы_ Java 2. Кстати, по J3D и JAI нет еще теста на BrainBench, в то время как по J2D и J2EE я сдавал.

>> юзает именно что (o)caml

Я очень за них рад. А американы - те просто в восторге, что конкурент идет по ложному пути. (Кстати, в RH8.0, в отличие от глюкавого Mandrake 9.0 нет никаких камлов!)

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

Не надо путать выделение памяти и побочный эффект. Не надо софизмов.

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

Так оно и есть: AC - это бАААльшой ученый.

Я не сотрудник IBM, но в IBM центре под Ниццей сопровождают Linux, Java, DB2, WebSphere & etc.. И никаких CAMLов.

NikS
()

<Вопрос в знании _основ_ Java.>

Вот и скажите мне, как автор монографий, можно ли в коде, использующем JavaBeans, использовать синглетоны? Есть ли на них _явный_ запрет?

<Не надо путать выделение памяти и побочный эффект.>

Почему это путать? Это проблемы одного порядка, и решаются в императивных языках совершенно одинаковым образом -- методом грубой силы.
В том же C++ никто мне не мешает использовать те же smart pointers, и не использовать глобальных данных, статических членов и т.д. Значит ли, что в C++ нет проблемы управления памятью, и проблемы ПЭ?

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

>> можно ли в коде, использующем JavaBeans, использовать синглетоны?

Да, что и используется в проекте Eclipse, в котором работает сам E.Gamma. (Если Вы не читали GoF - то это Ваша проблема)

>> Это проблемы одного порядка, и решаются в >> императивных языках совершенно одинаковым образом -- >> методом грубой силы.

Ну, большому ученому виднее. Тем более продемонстрировшему нам столь высокую грамотность при создании Java кода.

NikS
()

<Так оно и есть: AC - это бАААльшой ученый.>

А NikS, видимо -- инженеГр. Не вижу ничего зазорного в том, чтобы заниматься research.

<Я не сотрудник IBM, но в IBM центре под Ниццей сопровождают Linux, Java, DB2, WebSphere & etc..>

У меня иногда возникают сомнения в вашей адекватности. Совершенно естественно, что в _IBM_ центре под Ниццей сопровождают _именно_ технологии, на которые делает ставку _IBM_ -- то бишь Linux, Java, DB2, Websphere, etc, и только они. Скажем, дотнет там сопровождают?
И небольшой контрпримерчик -- в OTI (я надеюсь, это название вам что-нибудь говорит) пишут, и изрядно, аж на прологе.

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

В примере с new/delete есть натяжка. Вот если бы кто-то сказал - не используйте new, используйте supermupernew, для которого есть быстрый и эффективный сборщик мусора - и некая компания сделал бы это своим стандатром - тогда нужно было бы гнать тех, кто делает new. Так вот нормальная компания вполне может сделать javabeans своим стандартом. И это вполне внятный и непротиворечивый набор правил, который делает жизнь проще. Кстати, закрытие данных - это даже не JavaBeans, это из "общечеловеческих ценностей". И - главное - JavaBeans не решает _всех_ проблем языка, но указанную - о побочных эффектах - решает. С этим согласны, функциональщики. Дальще - орг. вопрос. Возможно, стОило вынести все эти вещи на уровень языка, а не правил. Но тут сложно.

Кстати, проблема синглетонов - это отдельный вопрос. Считать ли их частью состояния объекта? Не уверен. Да и при определении и использовании метода getInstance совсем не обязательно указывать, что он реально вызывает singleton - если с синхронизацией все в порядке, проблем не будет ни в каком случае (да, идеологически, да если считать это частью состояния...). В реальной жизни, при таком тормозном gc, как в жабе, singleton - ОЧЕНЬ важная вещь. Видел я jsp с custom tags - так там прогон gc занимал чуть не секунды!

svu ★★★★★
()

>> А NikS, видимо -- инженеГр.

Догадливый, однако. Да я простой Java программер.

>> Не вижу ничего зазорного в том, чтобы заниматься research.

И получать соответственно.

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

Ну и что? И приходится им потом Smalltalk код переводить на Java. Мне же лучше.

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

<Да, что и используется в проекте Eclipse, в котором работает сам E.Gamma. >

Ну, тогда вообще о чем речь. Что вы тут тогда нам втирали, что де, если использовать JavaBeans, то проблема ПЭ сходит на нет? Приведенный мной выше пример с синглетоном убедительно показывает, что это не так.

<(Если Вы не читали GoF - то это Ваша проблема) >

Читал, читал -- на редкость скучная книга. Вам уже предлагалось -- не считайте своих оппонентов идиотами, вы выглядите глуповато.

<Ну, большому ученому виднее. >

Да не вопрос.

<Тем более продемонстрировшему нам столь высокую грамотность при создании Java кода. >

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

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

Да нету в сингельтонах никакой проблемы. E.Gamma показал что нету. Надоело E.Gamma заниматься research - вот и отвалил в IBM.

А что касается правил - то их определяют Eclipse/WSAD или SunONE Studio. Зачем ломать язык - только ради высоколобых ресечеров, практического толку от которых (как пишет Ален Голуб), как от козла молока?

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

<Вот если бы кто-то сказал - не используйте new, используйте supermupernew, для которого есть быстрый и эффективный сборщик мусора >

Давно есть самые разнообразные смарт-пойнтеры (смотрите boost). Давно есть сборщики мусора для C++. А проблема управления памятью -- есть.

<но указанную - о побочных эффектах - решает. >

Да не решает же!!! Показано же, как именно не решает -- состояние объекта можно изменить через синглетон.

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

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

Где это такой пример Вы откопали? Сами придумали?

>> Читал, читал -- на редкость скучная книга

Напишите свою. Только про int не забудьте.

>> уж лучше в коде, с листа вгонявшемся в форму, пропустить int, >> чем, с позволения сказать, нести здесь такую чушь, какую несете вы

Да ну?

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

<Да я простой Java программер. >
Тогда и не суйтесь в калашный ряд.

<И получать соответственно. >
Соответственно, очень неплохо.

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

>> состояние объекта можно изменить через синглетон.

Боюсь, что Вы не знаете, что такое сингелтон. Ту безграмотную чушь, которую Вы написали назвать сингелтоном (по E.Gamma) нельзя.

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

Эх, обидно, про smartpointers забыл. Все либо С, либо java - на плюсах давно не работал. Да, в языке С++ проблема есть. В том "над-языке", который выбирает для себя контора, делающая проект со smartpointers - проблем нет. В реальной жизни для проекта выбирают не столько язык, сколько framework (купленный или свой). Голый язык интересен только академикам. И в С++ можно сделать framework без проблем с памятью. И в жаба - без побочных эффектов.

Да, я посмотрел спеки бинзов. Там нет про синглетоны (не нашел). Но, мне кажется, они не соответствую духу... И - главное - это не часть состояния объекта. Это часть состояния класса. Разница все-таки есть...

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

>>><Да я простой Java программер. > >>> Тогда и не суйтесь в калашный ряд.

Куда там Java программеру до теоретика, который даже "singelton" без ошибок написать не может.

>> <И получать соответственно. > >> Соответственно, очень неплохо.

Эти байки оставьте для первокурсников.

Кстати, признаю свою ошибку. Нет в JavaBeans классического сингелтона. Просмотрел сейчас сорсы Eclipse. (Они доступны.) В JavaBeans шаблон гарантирует создание лишь единственного экземпляра внутри класса. Статика запрещена. Да я ошибся. Но и теория высоколобого AC рушится.

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

Да, кстати, AC имел в виду классический singleton типа:

class Singleton { public: static Singleton* Instance(); protected: Singleton(); private: static Singleton* _instance; };

Singleton* Singleton::_instance = 0;

Singleton* Singleton::Instance () { if (_instance == 0) { _instance = new Singleton; } return _instance; }

Естественно, в Java это не практикуется. Там есть анонимные классы, гарантирующие создание единственного экземпляра объекта.

Если AC напишет нам еще и анонимный класс, то тогда все - "три раза КУ!" верблюжатникам!;)))

NikS
()

<Где это такой пример Вы откопали?>

В сообщении 18:42:21.027.

<Сами придумали? >

Именно. А что, чем не пример? Опять демагогией занимаетесь?

<Напишите свою.>
Desing Patterns меня не интересуют. А в той области, что меня интересует, пока рановато. Это ж не монографии по Джаве писать:)

<Да ну?>

Ну да!

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

... Ряды сторонников Java вновь сомкнулись над телом несчастного singleton и упрочили оборону от нападок диких функциональщиков ...:)

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

>> Desing Patterns меня не интересуют.

Правильна! В Design Patterns думать нада! А AC даже класс типа "синглелтона" без ошибок написать не может.

Вы хоть что такое анонимные классы в Java разумеете? Или ликбез для титиретиков нужен? Если Гослинг для Вас слишком труден, то мою книжку почитайте - там это описано.

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