Почему в языке Java нет таких языковых конструкций как «свойства» и «индексаторы»?
Почему в языке Java нет таких языковых конструкций как "свойства" и "индексаторы"?Их введение не особо усложнит сам язык, но довольно сильно упростит работу, и сделает код краше.Куда смотрят Oracle?
cthulhudx: когда то JVM была часть Windows и MacOSX. Сейчас у 95% народу JVM нет и софт на Java у них тупо не заработает. А засорять систему разной мутью, которая тормозит и имеет кучу дыр мало кто захочет.
beduin01:Вы ошибаетесь, JVM никогда не была частью какой-либо операционной системы.Я хочу вас удивить, но львиную долю Enterprise, Big Data, Web и Moblie, областей занимает Java, а не C#, который за несколько последних лет хорошенько просел, взять тот же WPF.Насчет уязвимостей в безопастности - их имеет каждый софт.Но лучше уж фиксить уязвимость за неделю и выпускать патч, нежели держать их открытыми по полгода, как это происходит с платформой .NET, что касается скорости выполнения байткода - это байки 90-х годов.В данный момент HotSpot Jvm довольно быстро выполняет java программы.Если Java настолько медленная, то почему же на ней пишут большую часть высоконагруженного бэкэнда для игр и ее использует Hadoop как нативный язык?
cthulhudx: JVM (вернее ее аналог был встроен в Windows XP SP0). Так же Java шла с MacOSX до 2010 года (точно не вспомню).
Посмотрите статистику и вы увидите, что Java на порядки более дырявая чем .NET. Количество уязвимостей с удаленным выполнением кода просто огромно. Это к теме стоит ли на ней софт под веб писать. С десктопом тоже все прелестно. У пользователей JVM в 95% случаев просто нет и никто морочиться с его установкой не будет.
Высоко нагруженные вещи (типа фейсбука) тоже на PHP написаны, только смысл то в этом есть хоть какой то?
cthulhudx: Судя по тому, что Вы написали, Вы вполне компетентны сами ответить на свой вопрос. Зачем Вы его задавали, если честно? Для самоутверждения? Ради флейма? Хотите оценить квалификацию аудитории? Или, может, были другие причины? В любом случае, похоже, вы выбрали не тот ресурс.
beduin01: Я Вас умоляю... Джава не умрёт ещё очень долгое время. А зарплаты у java-программистов как были, так и остаются в ~1.2 раза больше C#-программерских, и этот тренд будет оставаться еще очень долго, до тех пор пока .NET полностью не отвоюет юниксовый рынок, что будет нескоро, учитывая временнУю задержку в миграции бизнеса на новые платформы. По предыдущиму опыту долгой смерти Delphi, я бы ставил на 10-15 лет медленного умирания Java. При этом, зарплаты специалистов будут до последнего сохраняться на высоком уровне, поскольку отток специалистов будет компенсировать спрос со стороны клиентов, вынужденных поддерживать устаревшие системы. До сих пор вижу вакансии на Delphi-программистов с достаточно неплохой зарплатой.
P.S. Несмотря на то, что последние 5 лет я работаю C#-программистом, я длительное время проработал Java-программистом в сфере investment banking, где писал как server-side, так и UI. Про UI всем и так всё понятно - Java тут аутсайдер. Про server-side - Java пока держится молодцом. Но эта тенденция сохранялась до тех пор, пока MS не решили выпустить стек .net в open source. Паритет нарушен в пользу Microsoft. У Oracle нет козырей.
beduin01: Мда.На лицо явное непонимание того, для чего нужна Java.Во-первых - JVM не является системным ПО.Это просто виртуальная машина.Во-вторых - на java ,в большинстве случаев, пишут серверное ПО, а не desktop приложения - достаточно jvm на сервер установить.Смысл в высоконагруженных сервисов и облаков - получение большой прибыли.Не надо мне с пеной у рта доказывать что .NET лучше, ибо это наброс.
lam0x86: Я задал вопрос потому, что реально не понимаю почему в данный момент в java 8 уже есть lamda expressions, но свойств и индексаторов все еще нет, и приходится по 10 раз писать методы установки/получения значения поля класса.Когда в других языках это можно сделать одной строчкой.
cthulhudx: Я думаю, тут имеет место психологический фактор. В моей команде примерно 15 java- и 7 C#-разработчиков. И когда разговор заходит о поддержке свойств на уровне языка, подавляющее большинство java-программистов утверждает (и вполне обоснованно), что свойства - это всего лишь синтаксический сахар. Им удобнее и понятнее работать с get/set-методами - по их мнению так улучшается читаемость кода, и, если честно, мне нечем возразить - читаемость и вправду лучше. По поводу индексаторов - тот же аргумент. А Вам нравится переопределение операторов в C#? Уж сколько копий сломлено по поводу того, что эта фича нужна исключительно в узкоспециализированных сферах и часто используется неправильно. То же и про индексаторы - нередко их втыкают туда, где им не место быть.
C#, безусловно, более гибкий язык с точки зрения синтаксиса, но это является как достоинством, так и недостатком. Язык D, например, гораздо более гибкий, чем C++, но это не пошло ему на пользу (по крайней мере, пока).
lam0x86: "Но эта тенденция сохранялась до тех пор, пока MS не решили выпустить стек .net в open source. Паритет нарушен в пользу Microsoft. У Oracle нет козырей" - вы считаете, что .NET захватит Enterprise?Почему это должно случиться?
cthulhudx: Я не аналитик, никакую статистику не подводил, поэтому всё, что я пишу - это моё личное мнение, которое может быть ошибочным. Но мне кажется, что мир Enterprise не замкнут на самом себе, и выбор технологий отталкивается от принимающих решение сотрудников (системных архитекторов), которые, в свою очередь, отталкиваются во многом от популярности технологий. Я уже сказал, что на данный момент Java всё еще вне конкуренции в этом секторе, но в будущем, на мой взгляд, ситуация будет постепенно меняться. Она уже меняется, на самом деле: язык Java и вправду застоялся на месте; Scala - слишком молодой язык; .Net выходит в open source, что увеличит комьюнити, и, как следствие, количество новых библиотек, фреймворков, и в целом позитивно скажется на популяризации платформы. А в банках, между прочим, тоже любят использовать open source библиотеки. Ну и самое главное - расширение поддержки .net-а на nix-ы. Оно и раньше было через Mono, но это всё не то, "не энтерпрайзно" - до продакшена такое редко допускают.
По тем же причинам, почему в Java нет перегрузки операторов и огромного количества других плюшек. Разработчики языка не любят всякий синтаксический сахар, а свойства и индексаторы - это и есть синтаксический сахар над простыми методами.