идеология, приемущества Java

начинаю учить java, прочитал литературу, написал не сколько маленьких программ, но так и не понял в чем приемущество в Java перед другими языками, кроме JVM (другие языки тоже можно запустить в дургих VM и в JVM)
мне Java показалась очень простая с маленькими возможностями

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Вот любит народ холивары:) Сравнивать Перл и Джава нет смысла — разные ниши. Джава, судя по синтаксису, изначально разрабатывалась для больших проектов, поэтому и ООП в ней поставлен во главу угла. В Перле, напротив, ООП притянуто за уши (сам Ларри Уолл говорил это), поэтому, например, мейнстрим перл вовсю использует Moose (набор модулей, облегчающий ОО программирование на Перл). Каталист 5.8, например, переписали с Moose. Сам если и пишу, то на Перл. С синтаксисом Джава знаком, после Перла, конечно, смешно смотреть на него. Но в этом его достоинство. Иной кул прогер так накодит на Перле, что без косяка не разберешься. В джава с этим, ИМХО, проще.

[offtop]
А у меня WWF ассоциируется с World Wrestling Federation...

[/offtop]

Одно замечание:
WWF — это зарегистрированный товарный знак и означает он следующее: World Wide Fund for Nature
Поэтому в МС убрали первую букву W.

PS: freak зачот! Чевочки эмо рулят!

rassamaha, по моему ее надо было закрывать после первого поста) Кста, странно что спор перерос в сравнения.NET vs JAVA, ведь ТС сравнивал JAVA с perl. И вообще, доказывать однозначное преимущество.NET или JAVA это верх идиотизма, было бы что то круче, не писали бы мы на другом)

Вот имено мелкософты заточены под винду, а java нет.
Мне кажется это топик перерос в старый холивар.NET vs JAVA.
И у того и утого есть свои + и -.

Предлагаю закрыть топик за бессмысленностью происходящего)

freak +1 — подняли настроение:)

Ясно, я её знаю как WWF — Windows Workflow Foundation:)

Первую W официально убрали, оставили только WF.

Увидел перечисление фреймоворков и отнёс к однобокости.

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

WF — это Workflow Foundation.

Ясно, я её знаю как WWF — Windows Workflow Foundation:)

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

Увидел перечисление фреймоворков и отнёс к однобокости.

Народ, на о чем вы спорите? Жава круче, так как жавовские

«alpha geeks»

это

девочки ЭмА

. А Эма сейчас куча, следовательно инноваций в джава тоже толпа. И ваще, я вот не пойму, как можно писать под мелкасофт, у них же дизайн визуал студии не розаво-гламурный, полная лажа! А эта решетка рядом с буквай С, к чему она?, а к джава кужа приятных слов: Весна, Стразы (Struts), Том кот, сетевые бобы, ну приятно писать!, а в микрасофте? сплошные бессмысленные сокращения! нет уж, вы как хотите, а девочки эмо остаются на джаве!

>> Александр
У меня песочниц много, поэтому есть с чем сравнить:) Имелось ввиду, что по количеству фреймворков нельзя судить об уровне инноваций. Кроме того, я навел реальный пример из жизни, за который я в данный момент отвечаю, где же однобокость?

WF — это Workflow Foundation.

sashaeve, Вы вообще-то тоже как-то однобоко говорите о своей песочнице (.NET):)

Кстати, что такое WF?


Рівень інновації в Java, як в екосистемі — IMHO — суттєво вищий чим в.Net, причому вже не перший рік
WCF, WPF, Silverlight, WF, DLR, LINQ, Parallel Extensions, Microsoft Research...- продовжувати?
P.S. Не хочеться вступати в полеміку, але, якщо Ви вже пишете своє імхо, то потрудіться якось привести переконливі приклади.

Ситуація з життя: проект для мобільних пристороїв (iPhone, BlackBerry, Android, WinMobile). Для iPhone і WinMobile вже давно зробили і забули, BlackBerry i Android (Java) — це повна ж...а, з-за того, що в кожного стоять різні фреймворки, IDE, ще якась фігня, яка затягує процес здачі вже на добрий місяць (+100% запланованого часу). З.net все просто — є версія фреймворка і є нормальний IDE (Visual Studio) і процес інсталяції та деплоймента ну дууууже простий (ну iPhone тут тоже підкачує), чого не скажеш про вищесказані платформи.

Ще один цікавий момент.
Java має значно ширшу підтримку «alpha geeks» i.e. — має значно більше різних передових проектів. Наприклад такі штуки як Google Protocol Buffers (Google інтенсивно використовує для внутрішніх цілей), Project Voldemort (key-value store, як і куча інших), GWT і так далі.
Адекватної альтернативи Spring/Guice так і не бачив.
Це все речі які вийшли з Java і розвиваються далі. А є ще всякі штучки типу GigaSpaces чи Terracotta які взагалі рвуть в пух і прах:)

Рівень інновації в Java, як в екосистемі — IMHO — суттєво вищий чим в.Net, причому вже не перший рік.

косит на пхп (СиПиПишный стиль, так как С#, D, etc)

... по сравнению с perl, java как буд-то сделали для маленьких девочек emo:)

Я был под столом! после этого я просто обязан бросить пивать на гребаной яве и пересесть за перловку)). А я тут на асемблере пробовал писать — гамно гамном, ну вот кому нужно читал мув аикс беикс писать? это не Эмостайл

Я б поділив книги на 3 категорії:
1) ті, де автор вичерпно висвітлює матеріал, змістом обговорення якого є книга; напр., «Бьерн Страуструп. Язык программирования С++», «Хелен Борри. Firebird: руководство разработчика баз данных»,...
2) ті, де автор достатньо глибоко викладає ті теми, які вважає за потрібне, а про решту каже, що тут він тільки зачепив їх;
3) ті, де автор так подає матеріал, що необізнаному у ньому читату важко здогадатися, що є ще купа речей по темі книги, про які автор навіть не згадує; мене такі книги бісять, колись давно читав щось на зразок «C++ для чайників», і тепер, розбираючи Страуструпа, із здивуванням взнавав про шаблони, stl, виключення у С++...

Можливо, топікстартер прочитав книгу 3-ої категорії, і тому щиро вірить, що java мало що може.:)

молоцца, Дима, наслаждайся
народ, клево пофлеймили.

занавес:)

Биби, Ваши посты читать сложно, даже не из-за того, что там куча грамматических ошибок/описок, а из-за сумбурности изложения мыслей. Мне, например, становится лениво копаться в этой свалке мыслей в попытках выделить что-то интересное. Думаю я не одинок. Ну как бы намёк, ага: -)

хорошо
но можно написать модуль в Python, Perl, ROR в котором будут asm функции (или сишные) и можно будет использовать удобно в ОО интерфейсе... с воздуха оно не появиться все равно...

(если в Java нельзя asm, то я не говорю что это большой недостато Java)

реально сложные программы на ней писать это не серьезно, но можно на любом языке написать всё!

2bibi давайте не будем создавать ложные обобщения вроде как «на любом» и «все».

Например — написать прогу для прямого доступа к видео памяти на java фиг. Сайт на асме написать тоже. Поэтому прошу Вас, отслеживать в своих высказываниях ложные обобщения. Это сделает жизнь проще и Вам и окружающим.

опять вы со своей жабой
жабу, C# можно отнести к языкам которые сделаные для изучения такие как PASCAL/DELPHI/VBA (но это грубо говоря, те языки которые преподают в университете, потом С, потом не много С++)
реально сложные программы на ней писать это не серьезно, но можно на любом языке написать всё!
зачем делать простой язык (про жабу, даже так написано про нее и видно по коду) чтобы использовать его в сложных проектах?
(может тут компилятор (в P-код) сложно было сделать если язык с большими возможностями?)

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

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

Wikipedia
PHP originally stood for Personal Home Page. [3] It began in 1994 as a set of Common Gateway Interface binaries written in the C programming language by the Danish/Greenlandic programmer Rasmus Lerdorf.
James Gosling initiated the Java language project in June 1991 for use in one of his many set-top box projects.

Java не косит ни под кого. Синтаксис Java Си-подобный как и многих других языков. Что касается платформы и подхода, то тут говорить про C# и Java корректней и их схожесть. А также почему и как возник.NET.

очень простая с маленькими возможностями

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

PS не стоит делать резких необдуманных высказываний не имея знаний в данной области.

robin

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

мне Java показалась очень простая с маленькими возможностями, косит на пхп (СиПиПишный стиль, так как С#, D, etc)

А на этом месте вообще истерика приключилась. Для начала почитай историю. И в каком классе Вы учитесь?

jikesrvm.org
На самом деле вам нечего сказать, и Вы решили цепляться к словам. Понятно же что EE спецификация.

Следующий этап — поиск грамматический ошибок.

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

2 anonymous
Смысл дошел, просто «желания нет»:)

P.S. Думаю можем закрывать эту дискуссию.

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

фреймворк.Net не стандарт, он реализует (включает в себя) стандарт ECMA-335.

То есть смысл утверждения «если есть желание пишем сразу софт под Моно и все нормально работает» так и не дошел? Печально.

2 anonymous 17 мин. назад
О, теперь я вас понимаю.
Sun JVM — это фактически стандарт. IBM JVM, OpenJDK стараются быть совместимыми, но никто не гарантирует что все будет переносимо между этими продуктами. При этом Sun JVM есть под разные платформы. К слову jikes — не поддерживает всех возможностей даже java5.0, насколько мне известно.
Реализация.Net есть только под MS Windows. Mono — это только некая не официальная реализация, которая, насколько мне известно, не поддерживает всех возможностей C#.
Вывод:
Java мы можем использовать на разных платформах и быть уверенными в том что поведения программ будет одинаковым. При желании мы можем использовать альтернативные реализации.

Для того чтобы использовать C# на разных платформах необходимо найти некую не официальную реализацию, которая может быть не совместимой с официальной, тем самым не имея возможности использовать все возможности языка и/или библиотек.

Разве mono под windows не работает?

Видимо у ораторов нет возможности задуматься о том, что Java запускается под той же реализацией JVM на всех операционных системах. Попробуйте нормально запустить ваши J2EE под jikes, например.

Дорогой Костя, если Вы наконец RTFM, то прозреете, что Моно есть под Венду. Ваш Synapse видимо не работает из-за зависимостей от КДЕ.

если есть желание пишем сразу софт под Моно и все нормально работает

ну так вот же вам пример — Synapse IM — написан под моно, и нифига уже пару месяцев нет версии для винды, ибо нифига не работает на.Net

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


вывод: несмотря на конкретное название топика, дискуссия повернулась на обсуждение C# и.Net
нужно ли угадывать, какой язык самый популярный?;)

И конечно же это означает, что Срешетка самый лучший язык, да? Вы наверное так у одноклассников споры выигрываете?

Если надо перекомпилировать код под другую платформу, то о какой кроссплатформенности может идти речь.

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

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

Еще раз: если есть желание пишем сразу софт под Моно и все нормально работает. Скажите мне в каком месте от Вас ускользает смысл данного утверждения, я сегодня добрый, объясню еще раз.

2 anonymous

Пишите сразу под моно и все будет работать.

Если надо перекомпилировать код под другую платформу, то о какой кроссплатформенности может идти речь.

Команда из Редмонда проберется ко мне домой и похерит поведение моего Моно?

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

Эти отписочки от карманных редмондских хомячков из ECMA, куда все попадает по принципу, когда стандартом признают текущее состоянии одной конкретной реализации

Какие выводы Вы сделали?

вывод: несмотря на конкретное название топика, дискуссия повернулась на обсуждение C# и.Net

нужно ли угадывать, какой язык самый популярный?;)


Все намного проще, они поменяют поведение или что-то в таком стиле.

Поведение чего именно? Команда из Редмонда проберется ко мне домой и похерит поведение моего Моно? Ужас какой...

Просто ради интереса, вы пробовали запускать скомпилированные в виндовс программы на C# на линукс (Mono), например на убунту (Не большой секрет, не запескаетсо).

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

2 anonymous

Команда зачистки из ребмонда придет ко мне домой и поформатит винт?

Все намного проще, они поменяют поведение или что-то в таком стиле.

Просто ради интереса, вы пробовали запускать скомпилированные в виндовс программы на C# на линукс (Mono), например на убунту (Не большой секрет, не запескаетсо).


выводы очевидны

Мне не очевидны. Какие выводы Вы сделали?

под линуксом есть такой замечательный клиет Synapse, написан на С# под Mono. версия только под линукс, по винду портировать не выходит так как очень сильно Mono! =.Net. выводы очевидны


Вы уверены что Mono, который является не официальной реализацией, соответствует всем стандартам

Стандарты? Эти отписочки от карманных редмондских хомячков из ECMA, куда все попадает по принципу, когда стандартом признают текущее состоянии одной конкретной реализации, а не наоборот делают реализации в соответствии со стандартом?

его не прикроют по каким-то патентным статьям.

Наивное дитя увидило статейку на хабре и подхватило? Расскажите мне механизм как его «прикроют»? Команда зачистки из ребмонда придет ко мне домой и поформатит винт?

На самом же деле, единственно правильный язык это Си++. Все остальные языки являются происками транснациональным мегакорпораций, целью которых является порабощение мира! А еще программисты на Java и C# едят маленьких детей на завтрак!

Та ну нах.

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

2 randrey

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

Гыгы, мне кажется, что Росомаха — это диверсант засланый точкаНЕТчиками для дискредитации Жавы:)

Просто к слову:

Как и для других Unix-систем под Solaris есть Mono

Так много языков не знаю, сори)

Но поводу C# могу сказать что для Solaris у него нет виртульной машины, но это же дела мелкософта.

Знать один язык это не преимущество.

Согласен, но возможность не переучиваясь на другой язык писать для разных платформ это не приемущество?
Думаю всем было бы полезно просто почитать это:
Java в wiki
Основные возможности:
автоматическое управление памятью
расширенные возможности обработки исключительных ситуаций;
богатый набор средств фильтрации ввода/вывода;
набор стандартных коллекций, таких как массив, список, стек и т. п.;
наличие простых средств создания сетевых приложений (в том числе с использованием протокола RMI);
наличие классов, позволяющих выполнять HTTP-запросы и обрабатывать ответы;
встроенные в язык средства создания многопоточных приложений;
унифицированный доступ к базам данных на основе JDBC и SQLJ.
поддержка шаблонов (начиная с версии 1.5)
Еще раз повторюсь, считаю что язык надо выбирать для задачи, а не писать, на том что знаешь или любишь. Если это совпадает хорошо, иначе надо поднапрячься.

Сравнение java другими языками, это бесконечная тема. Типа hollywar:)

И каким образом это может быть преимуществом?

Забыл спросить, можете ли Вы привести доказательства, что Java «полностью выдерживает идеологию ООП»?

Назавите язык, кроме java, которые выполняется на виртуальной машине? и который поддерживает OC Linux, Windows, Mac, Solaris.

perl, python, php, lua (кстати, написан на ANSI C, следовательно будет выполнятся на большем числе архитектур), lisp, erlang, ocaml, C#, ruby, и много-много других динамических и не только ЯП. А еще, например, реализация С для parrot. Не надо выставлять наличие VM за преимущество

Разве это не приемущество, зная один язык писать desktop или web приложения?

Знать один язык это не преимущество.

Идеология\лозунг java: «Написано раз работает всегда», т.е.

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

Какая идеология у php?

Чесно говоря, Java это единственный мне язык, вокруг которого витает какая-то непонятная идеология.

Назавите язык, кроме java, которые выполняется на виртуальной машине? и который поддерживает OC Linux, Windows, Mac, Solaris.
Идеология java...

Полностью выдерживает идеологию ООП, в отличии от С++ нет множественного наследования, простой и понятный синтаксис.

Но все же, это (и ME, SE, EE) не преимущества, а специфика

Специфика конечно. На php можно написать desktop приложение или приложение для мобильного? Разве это не приемущество, зная один язык писать desktop или web приложения?
Java долго уже развивается и будет развиваться. мне нравится что исходный код java можно скачать и посмотреть.
Идеология\лозунг java: «Написано раз работает всегда», т.е. поддерживает вертикальную совместимость.

Какая идеология у php?

php и перл если не изменяет память, это скриптовые языки) И сравнивать их с java просто не имеет смысла.

Чисто скриптовым, сейчас можно назвать разве только shell, так-как подавляюще большинство языков компилируются в байткод и тп, преимущество JVM разве только JIT, но это уже особенности не самого языка. А реализации jpython, jruby, php (Quercus) не показывают прирост скорости выполнения.

OC Android (сначала там ядро линуха грузится, а потом java машина и на ней все происходит) для мобильных телефонов от google тоже на java, можно такое на php написать или perl???

Ну да, выполнение происходит в виртуальной машине, в этом ничего особенного

Но все же, это (и ME, SE, EE) не преимущества, а специфика, а хотелось бы узнать почему считается что Java это круто и в чем выражается ее идеология?

Работал на java года 1.5, очень понравилась ее идеология, документация кода вообщем очень нравилась.
Сейчас учу C#, ASP.NET приходится плюваться на студию и некоторые решения от мелкософта. (пришлось учить т.к. работу нашел именно для.net)
Это просто к слову.
php и перл если не изменяет память, это скриптовые языки) И сравнивать их с java просто не имеет смысла.
Они могут выполнять схожие задачи, но за их обоями скрываются разные принципы.
JAVA дофига универсальна, ME — mobile, SE — desktop application, EE — web. Для нее очень много либ, слышал даже что программу одного лунахода портировали с крестов на java:)
Интересно можно такое сделать с php или perl?:)
OC Android (сначала там ядро линуха грузится, а потом java машина и на ней все происходит) для мобильных телефонов от google тоже на java, можно такое на php написать или perl???
Вообщем язык выбирается под задачу, а говорить какой язык круче можно в свободное от разработки время.
Советую почитать все таки поболее о java, Корнел и Хорстман например.
Из всях зыков которые знаю\знал пока больше всего нравится java. В основном по идеологии.
Хотя ASP.NET делает java по web разработке, но в душе java люблю!:)

PS Может IDEA уже предложила web формы для java готовые, но разработка web на java была более трудоемкой чем на asp.net. Личное мнение.

Так какие у Java есть преимущества по сравнению, хотя бы, с php или perl? Кто-то их может перечислить, а не апеллировать к опыту работы с языком?

Как-то все быстро закончилось, я уже и попкорн достал...

П.С. учись студент!: -) и не смеши народ.

Это уж точно, смешно на это всё смотреть. Я думаю, что у Вас и знания С++ такие же глубокие. Я в молодости так не тупил. А потом удивляются, почему junior-ов не берут.

@Дмитрий Косенко
извините, конечно, но вы ээ... идиот
для того, что бы понять все достоинства Java нужно поработать с ней хотя-бы годик, написать парочку больших распределенных систем, а так если ваять «хеллоу ворлды» — это да выглядит как стрельба из пушки по воробьям. Не для этого ее, Джаву, придумали.

П.С. учись студент!: -) и не смеши народ.

Дмитрий, спасибо вам за хорошее настроение.

Рекомендую прислушатся к конструктивным советам выше.

Закрывайте топик, это лохотрон.

А на что разводят то?: D

Закрывайте топик, это лохотрон.

девочка emo наносит ответный удар:


open(INPUT,'graph.in') or die "file not found";
%graph={};
while (<INPUT>) {if(/^([0-9]*)\s*[:]/){my @a=grep !/^\s*$/, split/[\t ,;\n]/,$';$graph{$1}=\@a;}}
@v=();@p=('1');
while(@p){ $n=pop @p; if (!grep $_ eq $n, @v){push @v,$n;push @p,@{$graph{$n}};print "visited $n (@v)\n",}}

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

Круто!

А на чем еще знакомые пишут?

2 Дмитрий Косенко, не знаю що за рушій Ви написали і на якій мові, але дублювання коду дуже ріже очі


        $$$self{-getter}=$_[1]{-getter}           if exists $_[1]{-getter};
        $$$self{-setter}=$_[1]{-setter}           if exists $_[1]{-setter};
        $$$self{-destroyer}=$_[1]{-destroyer}     if exists $_[1]{-destroyer};
        $$$self{-aftertie}=$_[1]{-aftertie}       if exists $_[1]{-aftertie};
sub FETCH
sub STORE
sub DESTROY

2 Дмитрий Косенко

Советую подучить русский язык сначала, а потом можно и за Java / PHP браться:)

вот например можно ли написать такой движок?

а что делает ваш движок?

мне Java показалась очень простая с маленькими возможностями, косит на пхп (СиПиПишный стиль, так как С#, D, etc)

Перечисленный вами языки принципиально разные по своей идеологии.

Не могли бы вы уточнить чего именно вам не хватает в Java (и уверены ли вы что вам это нужно и без этого нельзя обойтись).

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

я пример привел, не хотите отвичать — не отвичайте, флудите дальше...

причем, эта девочка emo видимо была неглупа, строчила на жабе и зарабатывала норм бабосик:

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

Мне кажется кто-то тут хотел девочку emo, а она не дала.

Пришлось сливать обиды...; -)

УЖОСНАХ! Как можно поливать грязью то, в чем разбираешься понаслышке? Это какой-то капец. Судя по профилю Вам лучше учить ПХП и Пёрл.

Причем этот кадр уже умудрился в своё резюме вписать слово Java

http://www.developers.org.ua/m/ProFTP/

to Дмитрий Косенко
>> начинаю учить java, прочитал литературу, написал не сколько маленьких программ
>> мне Java показалась очень простая с маленькими возможностями, косит на пхп

Начинай изучать PHP — пригодится; -)

про допонителный возможности ООП в Java:
Design Patterns For Dummies (там второй раздел так и называется «Becoming an OOP Master»)
ну или
Spring

Как освоите сие прходите общаться дальше, ну, а вообще томик ИХМО беспредметный

Дима, жги еще!!! Язык для маленьких девочек эмо:) пацталом

эээ, что не нравится?
те примеры которые я увидел они мне не понравились, в литературе не рассказываются дополнительные возможности java чтобы применить их в ООП!
вот например можно ли написать такой движок?

(догадываюсь что нет, потому что мало возможностей...)

#Class.pm
package Property;
BEGIN {*UNTIE=*DESTROY}

sub TIESCALAR {
    print "creating layer..\n";
    my$self=\{};
    bless $self, $_[0];
    if(defined $_[1]) {
        $self->STORE($_[1]{-default})             if exists $_[1]{-default};
        $$$self{-getter}=$_[1]{-getter}           if exists $_[1]{-getter};
        $$$self{-setter}=$_[1]{-setter}           if exists $_[1]{-setter};
        $$$self{-destroyer}=$_[1]{-destroyer}     if exists $_[1]{-destroyer};
        $$$self{-aftertie}=$_[1]{-aftertie}       if exists $_[1]{-aftertie};
    }
    $$$self{-aftertie}($self, @_) if exists $$$self{-aftertie};
    +$self
}
sub FETCH     {
    if(exists $${$_[0]}{-getter}) {
        +$${$_[0]}{-getter}(@_)
    } else {
        print "getter called..\n";
        +${+shift}
    }
}
sub STORE     {
    if(exists $${$_[0]}{-setter}) {
        +$${$_[0]}{-setter}(@_)
    } else {
        print "setter called..\n";
        +${+$_[0]}=$_[1]
    }
}
sub DESTROY   {
    if(exists $${$_[0]}{-destroyer}) {
        +$${$_[0]}{-destroyer}(@_)
    } else {
        print "destroyer of worlds..\n";
        +shift
    }
}

package Class;

sub new {
    my($class, $self)=(shift, {@_});
    foreach(keys %{$self->{-properties}||={}}) {
        tie $self->{$_}, Property, $self->{-properties}{$_};
        print $_, "\n";
    }
    delete $self->{-properties};
    +bless $self, $class;
}

+1

package Child;
use base qw(Class);

sub new {
    +shift->SUPER::new(
        -properties=>{
            p1=>{
                -default=>1,
                -getter=>'Child::p1_getter'

#		sub {
                #    print "Your getter\n";
                 #   +${+shift}
                }
            },
            p2=>{
                -default=>3,
                -destroyer=>'Child::p2_destroyer'

#sub {
                #   print "Your destroyer\n";
                #}
            }
        }
    );
}
sub p1_getter {
	#...
}
sub p2_destroyer {

}
sub run {
    print "Running...\n";
    +shift
}

+1

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

Підписатись на коментарі