Потому что сознание среднестатистического лоровца изменено продуктами жизнедеятельности одного крайне харизматичного и технически подкованного персонажа, который на момент пребывания на форуме считал java мировым злом, высасывающим остатки мозгов у кодеров.
Так исторически сложилось - ругать java на написаном на ней форуме. Ругать расею живя в расеи. Отстаивать достоинства kde в форуме из под internet explorer. Etc.
ну почему же.. вот году этак в 95-ом она мне очень нравилась. прекрасная идея -- кроссплатформа, богатая на гуй, удобная и надежная, доступная из браузера. правда в те времена я не программировал..
потом они все испортили, сделав awt в 1.1 несовместимым с 1.0. потом они опять все испортили, прикрутив сбоку тормозной свинг. потом началась чехарда с версиями и велосипедами-для-сборки-явовсого-кода. кроме того, если вначале она как-то еще жила на современных ее версиям компьютерах, то потом она начала жрать и жрать и жрать все больше памяти.
в конце концов до меня дошло что заявленная кросплатформенность не очень-то и достижима, особенно в свете множества версий, что со swing связываться -- нельзя, что awt никогда не показывается как действительно нативные видгеты, да и беден без меры и возможности его улучшить. что синтаксис жабный -- это отнюдь не верх совершенства, а наличие примитивных типов отвратительно, что шрифты, кои с jdk идут -- гамно, и что javaws -- отвратный ни на что не годный хак.
кроме того, ни разу не встречал адекватных программеров на жабе. есть что-то в них от 1с-программеров, что-то неуловимо глупое и неуместное..
>>они все испортили, сделав awt в 1.1 несовместимым с 1.0.
Если с такими требованиями подходить, то все современные тулкиты нужно выбросить на помойку.
Может Tk только выживет, да и то вряд-ли, поскольку у них в районе 7.0-7.5 была какая-то чехарда.
Ява многословная, недостаточно выразительная. Из-за этого любые вещи, которые в нормальных языках делаются легко и очевидно, в яве требуют создания целого фреймворка. Этими фреймворками жаба уже обросла, как бородавками. Когда непосвящённый приходит в эту секту, у него гололва начинает кружиться: EJB, JMX, BSH, J2EE, ..., .... Многие со временам находят немалое удовольствие в умении ориентироваться в этой куче сущностей, но по-моему, если назначение любого инструмента не понятно человеку с улицы из двух-трёх строчек описания, значит, это не инструмент, а костыль, и проблемы, которую он предназначер решать, у человека с улицы просто не возникает. Если пролистать список явовских пакетов в любом дистрибутиве, окажется, что добрая половина из них — костыли для преодоления трудностей, которые ява создаёт сама себе. Из этой же оперы любовь явы к XML, по многословности и невыразительности они идеальная пара, как слепой с безногим. Пожалуй, ни на одном другом языке, кроме явы, не создано столько инструментов для различной XML-возни. И всю эту тоску, вместо того, чтоб её стыдиться и бежать от неё, преподносят как достоинство и называют Энтерпрайзом. Не в последнюю очередь благодаря яве, это слово уже стало ругательным в некоторых кругах. Ну и нафиг.
Единственная чего-то стоящая вещь из всей Явы — это JVM. И то, заточена она под всё тот же энтерпрайз, а для нормального человека малополезна. Из-за долгого запуска и большого разхода памяти. Человек помучается-помучается, да и уйдёт на Питон. Он стартует моментально, памяти ест не больше, чем надо, а что медленнее в разы, так для большинства тяжёлых задач всё равно есть сишные модули.
Гы-гы. Картина маслом: дверь. Обычная серая неприметная дверь. Порой, проходя мимо этой двери, на которой черными, словно воронье перо буквами написано "лОр", можно услышать легкий, едва уловимый шепот: "Тиха!.. Кто-та идет... Ой... линакс... к лагапеду..." И вот, идет солидный парень в стильном костюме, на котором галстук, и рубашка, и даже пиджак подчеркивают статус человека. Он подходит к двери "л0р". Поправляет свой отлично подобранный галстук, собираясь с мыслями, открывает дверь для того, чтобы, увидев цивилизованных людей, рассказать им, как же хорошо на свете, вне этой двери, как здорово поют птички, как отлично можно зарабатывать деньги на разработке ЫнтЫрпрайз-приложений на платформе Java. Но увидел он в ответ не заинтересованные взгляды умных людей, а красные глаза, острые зубы, отвратный оскал. Все, что он успел услышать, было: "Кто бы ты ни был, пи..дец тебе!. Ты изначально ущербен.". =)
PS: Прошу прощения, сегодняшнюю минутку бреда я провел на ЛОРе. =)
А может просто потому, что жава (язык) ненужна? Назовите область, в которой она превосходит всех конкурентов по большенству показателей. Восхваляют её те, кому не приходилось писать что-то серьёзное в сжатые сроки, а не клепать внеочередной велосипед. Хотя жава достойна уважения, хотябы как памятник победы маркетоидов над разумом.
Надо IQ 60 обладать или менее, чтобы этого монстрика не понять. На жабе сейчас уже все прогают и студенты и школьники и старички - попсовость как раз и говорит об недостаточной выразительности. Java - overbloated, overPRed crap.
Там где в руби есть динамический полиморфизм, в жабе нужно через ту самую жопу использовать композишн. Там где в перле обработка строк легка и непринужденна - в жаве нужно все делать через жопу. Фрейморки для XML поражают своей монструозностью. Не верите? Посмотрите сколько методов имеет обычный Integer - 24 штуки! Там где в С++ есть домнемание и перегрузка - в жабе сами знаете через что. Там где в питоне есть отличные коллекции объектов - в жабе есть ущербные генерики, которые ломают весь карточный домик жабовской строгой типизации. Примитивы - это охтунк и головная боль, были специально введены чтобы больным на голову С++никам было проще мигрировать. Там где в лиспе можно передать функцию как параметр - в жабе нужно через одно место копипастом заниматься. Вот и получается так, что вместо программировния логики в конторах занимаются трепетным поеданием любимых кактусов и преумножением количества кода, который только и делает что пробует из жабы сделать нормальный язык.
Что в остатке? В остатке имеет убогонький язычек доступный любому хуариши с пальмы, кучи смердящих корявых библиотек и фреймворков, а также главная ынтерпрайз фича - миллионы одинаковых взаимозаменяемых кодеров готовых работать за еду. А что ынтерпрайзу еще надо? Больше ничего, man COBOL.
Отличный язык для коммерческих разработок, позволяющий клепать бизнес-приложения оперирующие деньгами которые ОSS и не снились, в сроки, в какие среднестатистический красноглазик на c-gtk пишет хелло-ворлд.
И как верно заметил уважаемый Гер Паяльник - лоровцы ненавидят все.
по многим, смотря кто и как, одни просто ее не видели и не знают и повторяют за всеми - стадный инстинкт, другие зная что такое жава не любят ее изза реализации - а сама идея хорошая, третьи просто ненавидят все - это стиль у них такой обсирать все и вся - такие просто сами ничего не делают.
опереждая вопрос - большинство кто орет что лисп рулит - лиспа и не видели.
>Отличный язык для коммерческих разработок, позволяющий клепать бизнес-приложения оперирующие деньгами которые ОSS и не снились, в сроки, в какие среднестатистический красноглазик на c-gtk пишет хелло-ворлд.
Возможно есть преимущество в скорости разработки, но от этого страдает качество, которое выражается в потребление памяти. ИМХО, для пользовательских программ с++ и qt более предпочтительней.
>Внимание, вопрос в студии: по каким причинам? о_О
А всё очень просто. Всё дело в виртуальной машине, которая исполняет байткод. Т.е. получается что-то похожее на запуск программы под wine. Отсюда и все проблемы с памятью.
>Просьба не обобщать, кроме кричащих подростков сюда иногда заглядывают и вполне серьёзные люди.
Вполне серьезные люди тут занимаются стебом - посмотри на саныча например
>Возможно есть преимущество в скорости разработки, но от этого страдает качество, которое выражается в потребление памяти. ИМХО, для пользовательских программ с++ и qt более предпочтительней.
Для бизнесприложений, потребление памяти это дело третье. А Qt конечно вне конкуренции для десктопа, не даром это тоже один из самых популярных фреймворков для бизнесприложений
А вообще, потому что у меня гектар памяти и атлон 2400, на котором у меня библиотека на 13600 книг и видеотрансляция с ТВ на городскую локалку. Ничего не тормозит. А ява почему-то откровенно тормозит. Поэтому я её ненавижу. Я делаю неправильно?
>Для бизнесприложений, потребление памяти это дело третье. А Qt конечно вне конкуренции для десктопа, не даром это тоже один из самых популярных фреймворков для бизнесприложений
Насчёт бизнес-предложений согласен. Иногда дешевле купить дополнительную память, чем тратиться на разработку с использованием с, с++. Вот только в последнее время яву вместе с mono(dot.net) проталкивают на десктопы некоторые фанатично настроенные товарищи. Это играет на руку только производителям железа.
А что, разве в бызнысприложениях когда-то было много логики???
Там вся логика в 90% случаях - это Персистэнс->Обжэкт->пара ифов->несложный маппинг значений -> сложили/отняли->кинули дальше. Логики там может быть 5-10% от кода, все остальное мишура из паттернов и фреймворков.
Мда, ни одного слова адекватного. В то время, как сайт, на который малолетние дебилы™ пишут свои сообщения, http://www.linux.org.ru/view-message.jsp?msgid=2210097 перешел с resin 2 на tomcat 5.5, малолетние дебилы™ продолжают создавать себе образ врага в худших традициях Г.Киссинджера.
Ну например SomeClass obj = new SomeClass(...). Начнем с того, что SomeClass мы пишем два раза и используем дохлый оператор new. Если в C++ он и был оправдан, то в яве он кроме как "совместимости" не нужен. Продолжим SomeInterface obj = new SomeClass(...). Вопрос на засыпку: "Какого типа obj?". И еще более классная конструкция SomeClass obj1 = (SomeClass) obj. Если бы я ее не видел в множестве проектов...
Про типизацию Хиндли-Милнера я вообще не заикаюсь, хотя она нифига не противоречит концепции явы.
Интерфейсы... это вообще песня: чтобы соответсвовать какому-либо интерфейсу, я должен явно объявить что соответствую, и реализовать _все_ методы. Нет, чисто с теоретической точки зрения концепция выглядит правильно, если бы не наличие оргомного количества классов-заглушек в реальных проектах. Не лучше ли идти от противного: клас реализует методы такойТо и сякойТо, значит он соответствует интерфейсу такомуТо?
А жалкие попытки реализовывать полиморфные типы даннх через наследование или интерфейсы? Шаблоны Composite и Visitor, еще творения GoF все так же "рулят".
Ладно хоть классы сделали объектами первого класса.
Коллекции в языке со статической типизацией без полиморфных типов данных - песня. В скольких проектах рельные объекты храняться с типом более высокого порядка или вообще Object? А потом преобразуются назад? И сколько глюков и протечек такой подход принес?
Идиома IoC, от которой прутся явские веб-разработчики. Это что-то. Никогда еще я не встречал настолько простой идиомы, которую так сложно понять. Для тех кто в танке: некоторая внешняя по отношению к группе классов сущность создает синглетоны и устанавливает между ними связи путем вызовов в определенном порядке, либо их конструкторов, либо методов getXXX и setXXX, и отвечает за их правильное удаления. Притом идет неугасимый холивар насчет того какой способ более кошерный. Связи устанавливаются ввиде XML файла, показывая всю импотенцию явы, ибо в хаскеле такие связи устанавливались бы с помощью монад, в лиспподобных языках с помощью S-выражений, а любом другом ФП языке с помощью комбинаторов. А в С++ есть шикарная идиома Strategy и "списки типов" Александреску.
Вообще практика XML конфигурационных файлов просто поражает. Очень и очень многие проекты конфигурируются с помощью XML. Тем самым они глючно и неудобно переписывают половину функциональности явы с целью написать недостающие 10%.
То же можно сказать и про довольно широкую практику использования "ассемблера".
Любой проект просто поражает гигантской иерархией классов: Интерфейсов , Абстрактных классов, Обощенных классов, Классов исключений. Разобраться во всем этом многообразии за какой-то более-менее приличный срок невозможно. Поэтому пышным цветом цветут cheat sheet'ы, автогенераторы и прочие code snipetts.
Но ява это менстрим, поэтому там сделано "все для программиста", без мозга, но желательно со второй парой рук. Различные IDE которые сгаживают неровности языка - формирования getters/setters, автоматическое формирование обработчиков исключений, автоматические имопрты, рефакторинг и т.п, в принципе позволяют писать достаточно удобно ращличные проекты.
Но ява предоставляет шикарную инфраструктуру, которой грех не пользоваться. Приведу самый простой и насущный пример: система iBank от Бифита написана на Л И С П Е (!), интерпритатор которого написан на JVM. Притом, от JVM требуются настолько фундаментальные функции, что их разработка отлично работает на различных VM и платформах.