Изображение сайта vanillajava.blogspot.com
Кто-нибудь думал, что язык Java, первоначально предназначенный для устройств бытовой электроники, станет использоваться во многих других областях?
Расширение влияния Java, как ни странно, началось с разработки браузеров.
Главный разработчик Java Джеймс Гослинг перешел в Sun в 1984 году из исследовательского отдела IBM. До Java Гослинг разработал не имевший коммерческого успеха оконный интерфейс NeWS и GOSMACS — первую реализацию текстового редактора EMACS на языке С.
После этого Гослинг и его коллеги начали изучать перспективы на рынке электроники и бытовой техники.
«Группе была поставлена задача создать распределенную систему, которую можно было бы в качестве современной программной технологии продавать производителям бытовой электроники», вспоминает Гослинг.
В декабре 1990 года компания Sun создала рабочую группу для разработки новой технологии, куда вошел Патрик Нотон. Однако ему показалось, что возможностей C++ и С API не хватит для выполнения этой задачи.
Поэтому Патрик Нотон начал проект под названием Stealth Project, чтобы найти решение проблемы.
Позже к нему присоединились Джеймс Гослинг и Майк Шеридан, и проект получил название Green Project. Когда стало понятно, что у проекта – большие перспективы, они пригласили еще 10 человек и начали работать в офисе на Сэнд Хилл Роуд (Калифорния). Компания Sun поддержала начинание, предположив, что оно ознаменует «новую волну» в ИТ-отрасли.
Команда вскоре задумалась о том, чтобы усовершенствовать язык С++. Однако он оказался избыточным и слишком ресурсоемким, чтобы на его базе создать язык, удовлетворяющий поставленным требованиям:
1. Поддержка объектно-ориентированной парадигмы;
2. Возможность запуска одной и той же программы на разных операционных системах;
3. Встроенные механизмы для работы с компьютерных сетей;
4. Обеспечение безопасности удаленного исполнения программ;
5. Использование преимуществ других объектно-ориентированных языков программирования.
Хронология
Июнь 1991 г. — Гослинг начинает работу над интерпретатором Oak, который через несколько лет (при поисках торговой марки) переименован в Java.
19 августа 1991 г. — Коллектив разработчиков Green демонстрирует идеи базового пользовательского интерфейса и графическую систему сооснователям компании Sun Скотту Макнили и Биллу Джою.
17 октября 1991 г. — Шеридан и Нотон присваивают конструкторской философии своего коллектива девиз «1st Person», который со временем становится названием компании.
17 ноября 1991 г. — Офис проекта Green снова подключается к главной сети компании Sun линией на 56 Кбит/с
1 марта 1992 г. — К проекту Green присоединяется Джонатан Пейн, который позднее участвует в написании HotJava.
Лето 1992 г. — Интенсивная деятельность по доработке Oak, Green OS, пользовательского интерфейса, аппаратуры Star7 и соответствующих компонентов.
4 сентября 1992 г. — Завершена разработка устройства Star7; оно продемонстрировано Джою и Макнили.
1 октября 1992 г. — Из компании SunLabs переходит Уэйн Розинг, принимающий на себя руководство коллективом.
1 ноября 1992 г. — Организована корпорация FirstPerson.
15 января 1993 г. — Коллектив переезжает в Пало Альто в здание, где раньше находилась лаборатория Western Research Lab компании DEC и была основана исходная группа Hamilton Group (она же OSF).
15 марта 1993 г. — После ознакомления с результатами испытаний кабельного интерактивного телевидения, проведенных компанией Time Warner, корпорация FirstPerson сосредотачивается на этой тематике.
Апрель 1993 г. — Выпуск первого графического браузера для Internet — Mosaic 1.0, разработанного в центре NCSA.
14 июня 1993 г. — Компания Time Warner продолжает проводить свои испытания интерактивного кабельного ТВ с компанией SGI, несмотря на признанное превосходство технологии компании Sun и уверения, что Sun выиграла эту сделку.
Лето 1993 г. — Нотон пролетает 300 тысяч миль, продавая Oak всем, занимающимся бытовой электроникой и интерактивным телевидением; тем временем темп, с которой люди получают доступ к Internet, головокружительно нарастает.
Август 1993 г. — Через несколько месяцев многообещающих переговоров с компанией 3DO относительно разработки ОС для приставок, президент 3DO Трип Хокинс предлагает купить технологию. Макнили отказывается, и сделка срывается.
Сентябрь 1993 г. — К коллективу присоединяется Артур Ван Хофф, поначалу — чтобы создать среду разработки приложений, предназначенных для интерактивного телевидения, а потом разрабатывающий, главным образом, сам язык.
7 декабря 1993 г. — Экспертиза операций на высоком уровне в FirstPerson обнаруживает, что эта группа не имеет реальных партнеров или маркетинговой стратегии и неясно представляет себе дату выпуска.
8 февраля 1994 г. — Отменено публичное заявление компании FirstPerson о выпуске, которое должно было состояться на конференции Technology, Entertainment and Design (TED).
17 февраля 1994 г. — Исполнительным лицам компании Sun для разносторонней экспертизы представлен альтернативный бизнес-план корпорации FirstPerson по разработке мультимедийной платформы для CD-ROM и онлайновой работы.
25 апреля 1994 г. — Создана компания Sun Interactive; в нее переходит половина сотрудников FirstPerson.
Июнь 1994 г. — Начат проект Liveoak, нацеленный Биллом Джоем на использование Oak в крупном проекте небольшой операционной системы.
Июль 1994 г. — Нотон ограничивает область применения проекта Liveoak, просто переориентировав Oak на Internet.
16 сентября 1994 г. — Пейн и Нотон начинают писать WebRunner – браузер-аналог Mosaic, позднее переименованный в HotJava.
29 сентября 1994 г. — Прототип HotJava впервые продемонстрирован исполнительным лицам компании Sun.
11 октября 1994 г. — Нотон уходит в компанию Starwave.
Осень 1994 г. — Ван Хофф реализует компилятор Java на языке Java. Ранее Гослинг реализовывал его на языке С.
23 мая 1995 г. — Компания Sun официально представляет Java и HotJava на выставке SunWorld '95.
23 мая 1995 г. – Netscape объявляет о намерении использовать Java при разработке браузера Netscape.
21 сентября, 1995 г. – В Нью-Йорке проходит конференция по Java-разработке
25 Сентября, 1995 г. – Sun объявляет о расширенном сотрудничестве с Toshiba.
26 Сентября, 1995 г. – Sun анонсирует пакет инструментов для разработки с использованием Java-технологий
30 Октября, 1995 г. – На Internet World Conference в Бостоне компании Lotus Development Corp., Intuit Inc., Borland International Inc., Macromedia Inc. и Spyglass Inc. объявляют о намерении лицензировать Java.
4 декабря, 1995 г. – Sun, Netscape и Silicon Graphics создают альянс для разработке инструментария для интернета.
4 декабря, 1995 г. – Borland, Mitsubishi Electronics, Sybase и Symatec объявляют о планах лицензировать Java.
6 декабря, 1995 г. – IBM и Adobe объявляют о планах лицензировать Java.
7 декабря, 1995 г. – Microsoft объявляет о планах лицензировать Java.
23 января, 1996 г. – релиз JDK 1.0
В 1997 году большинство версий Java оставались бесплатными, за исключением Java Enterprise System. В этом же году вышла существенно обновленная версия – Java 2, а также выделились отдельные платформы: J2SE, J2EE, J2ME.
• J2SE 1.3 (Май 8, 2000)
• J2SE 1.4 (Февраль 6, 2002)
• J2SE 5.0 (Сентябрь 30, 2004)
• Java SE 6 (Декабрь 11, 2006)
• Java SE 7 (Июль 28, 2011)
• Java SE 8 (Март 18, 2014)
Каждая платформа включает в себя:
• язык программирования;
• набор служебных программ (JVM, JRE, JDK и т.п.);
• набор библиотек;
Java 2 Platform, Standard Edition (J2SE) предназначается для использования на рабочих станциях и персональных компьютерах. Является основой всех других Java-технологий.
Java 2 Platform, Micro Edition (J2ME) является усеченным вариантом J2SE, для того, чтобы соответствовать ограниченным аппаратным возможностям мобильных устройств, таких как, например, сотовые телефоны.
Java Virtual Machine (JVM) представляет собой программу, имитирующую работу некоторой гипотетической Java-машины.
Java Runtime Environment (JRE) представляет собой минимальный набор средств, необходимых для запуска Java-программ. Основу JRE составляют виртуальная машина Java и набор стандартных библиотек.
Java Development Kit (JDK) представляет собой набор средств, используемых в процессе разработки Java-программ: компилятор, отладчик, средства для автоматической генерации документации, комплект примеров и т.п. JDK работает с уже готовыми текстами программ и не содержит какого-либо редактора.
Интегрированные среды разработки (Eclipse, Netbeans, JBuilder и т.п.) для компиляции программ используют внешний JDK
Сферы применения Java-технологий
В настоящее время Java-технологии находят широкое применение в различных сферах. Это, в первую очередь, вызвано особенностями создания и запуска Java-приложений.
1. Разработка приложений (application)
Язык Java используется для разработки обычных прикладных программ, которые запускаются пользователем и имеют доступ ко всем ресурсам компьютера наравне с любыми другими программами.
Для запуска Java-приложений в операционной системе должна быть установлена среда исполнения Java (JRE).
2. Разработка мидлетов (midlet)
Язык Java используется для разработки специализированных программ, предназначенных для использования на мобильных устройствах.
Структура и возможности мидлетов обусловлены техническими особенностями мобильных устройств.
Для запуска мидлетов мобильное устройство должно поддерживать соответствующую возможность.
3. Разработка апплетов (applet)
Язык Java используется для разработки специализированных программ, обычно небольшого размера, запускаемых браузером внутри web-документа для вывода динамического содержимого и/или интерактивного взаимодействия с пользователем.
Для запуска апплетов браузер должен содержать соответствующий модуль (plug-in).
4. Разработка JSP-страниц (Java Server Pages)
JSP-страницы представляют собой HTML-документы со вставками на языке Java, которые используются для анализа пользовательских запросов и динамического формирования web-документов на основе результатов обработки этих запросов.
Для обработки JSP-страниц Web-сервер должен содержать соответствующий модуль.
5. Разработка сервлетов (servlet)
На языке Java разрабатываются специализированные программы-сервлеты, функционирующие в рамках Web-сервера и имеющие доступ к его ресурсам: файлам, базам данных и т.п.
Для запуска сервлетов используется Web-сервер со специальным модулем (контейнером сервлетов) или специальный сервер приложений.
Поглощение Sun
В ноябре 2006 года Sun объявила часть кода виртуальной машины Java (JVM) свободном распространяемым и начала выпускать его под лицензией GNU General Public License (GPL). К маю 2007 года компания распространяла бесплатно почти весь код JVM, за исключением малой его части, на которую Sun не имеет прав.
В 2009-10 годах корпорация Oracle поглотила компанию Sun Microsystems. В апреле 2010 Джеймс Гослинг, перешедший в Oracle после поглощения, покинул компанию.
Комментарии (97)
sim3x
26.07.2016 19:33+14И все же, что помогло языку Java «войти в каждый дом»?
vsb
26.07.2016 19:49+1Удачное сочетание достаточно простого для изучения языка, причём очень похожего на C++, так что большинство разработчиков того времени могли просто сесть и начать писать, с достаточно мощной виртуальной машиной, позволяющей решать многие задачи, для которых обычно использовался С++, гораздо быстрее (сборщик мусора, иммунитет ко всяческим access violation-ам).
1nt3g3r
26.07.2016 20:09+6Простота и логичность. Я писал на Java порядка 5-7 лет (до этого стандартные турбо паскаль, делфи), потом немного писал на C#. Как по мне? Java являет собой именно ту средину между нужными возможностями и ненужными усложнениями языка. На java можно написать мобильную игрушку, и производительный сервер на netty, и в обеих случаях будет ощущение, что язык тебе помогает, а не мешает.
lightman
26.07.2016 20:39+2ощущение, что язык тебе помогает, а не мешает.
А с C# оно, по-вашему, более или менее выражено?1nt3g3r
26.07.2016 21:18+8C# у меня оставил впечатление некой перегруженности (это лишь мое субьективное мнение). Например, в Dict доступ к обьекту можно получить, используя квадратные скобки — a[«key»]. Вроде бы приятно, но если, например, ключами будут числа — то запись вида a[4] уже однозначно нельзя трактовать — a это массив или Dict?
Я понимаю, что это с какой-то стороны мелочи, и это дело привычки, и IDE покажет тип обьекта. Но именно строгость и прямолинейность Java в этих вопросах (ах, программист, хочешь удобную работу с Map — окей, держи — map.put(«key», value"), value = map.get(«key»)) мне нравится. Мне нравится, что в большинстве случаев мне не нужно задумываться про то, что я пишу — я лишь переношу мысли с головы в код. Из C# у меня такого ощущения не возникало.
Опять-таки, я осознаю, что это очень субьективное мнение. Возможно, если бы я еще год-два писал на C#, я бы изменил свою точку зрения.
P.S. А еще в Java шикарнейшие enum.lair
26.07.2016 22:28-2то запись вида a[4] уже однозначно нельзя трактовать — a это массив или Dict?
А это зачем-то надо однозначно трактовать?
1nt3g3r
26.07.2016 22:37+4Если я вижу запись вида a[4] = 5, здесь есть два варианта: Dict или массив. Если я читаю незнакомый мне код, это однозначно заставит меня на секунду задуматься (вспомнить) две вещи: 1) что же такое «a» (какую роль играет эта переменная) 2) Какой тип этой переменной. В зависимости от типа эта переменная может играть разную роль.
UPD: Еще момент — приходится удерживать в памяти лишнюю сущность — знание, что из нескольких вариантов типов «а» является каким-то конкретным типом. Учитывая, что кратковременная память способна удерживать не так уж и много, разумно предположить, что лучше максимально освобождать ее на другие задачи.
Как по мне, лучше пусть язык не заставляет над таким задумываться. В какой-то мере это напоминает ситуацию из JavaScript — там вообще можно что угодно делать, но народ потихоньку пытается отходить на что-то более строгое — TypeScript, CoffeScript.lair
26.07.2016 22:39+3Если я вижу запись вида a[4] = 5, здесь есть два варианта: Dict или массив.
Намного больше, на самом деле.
1) что же такое «a» (какую роль играет эта переменная)
Это должно быть очевидно из названия.
2) Какой тип этой переменной.
Зачем вам эта информация?
В зависимости от типа эта переменная может играть разную роль.
Это плохой дизайн (до тех пор, пока вы не делаете полностью type-based programming). Семантика переменной должна определяться по ее названию, а не по типу (и уж точно не по тому, какой тип коллекции использован для переменной).
1nt3g3r
26.07.2016 22:47+1Это должно быть очевидно из названия.
Семантика переменной должна определяться по ее названию, а не по типу (и уж точно не по тому, какой тип коллекции использован для переменной).
Я с вами абсолютно согласен. Но здесь такой момент, что далеко не все программисты обладают достаточной квалификацией (а иногда и желанием) писать такой хороший код. И часто так бывает, что переменным присваивают неподходящие имена. Тогда хотя бы знание типа помогает разобрать такой код. Такой код встречается у многих проектах — например, я использую популярный движок libGDX — он opensource, поэтому я часто заглядываю в кишки, посмотреть как и что делается. Так там много чего попадается, что не попадает под определение «хороший код». Где-то красоту приносят в жертву оптимизации. В общем, надеяться на то, что в переменных всегда будут правильные имена нельзя :)lair
26.07.2016 22:51+1В общем, надеяться на то, что в переменных всегда будут правильные имена нельзя
Тогда нельзя и надеяться, что у переменной правильный тип, поэтому ваша логика все равно неприменима. И да, никакая оптимизация не может оправдать плохое именование.
На самом деле, это очередная вариация дискуссии
var
vs explicit typename, и Липперт давно все сказал по этому поводу.Showvars
27.07.2016 05:42никакая оптимизация не может оправдать плохое именование.
Иногда, из-за необходимости в оптимизации в коде теряется контекст решаемой задачи. Отсюда и получаются такие проблемы, когда разработчику сложно подобрать удачное именование той или иной переменной, чтобы было понятно для других, зачем она здесь :)
lair
27.07.2016 05:47+5Именно в таких случаях именованию надо уделять особое внимание, чтобы те, кто придут потом, понимали, что происходит. Это вопрос исключительно лени/квалификации разработчика, на скорость выполнения это не влияет никак.
firsttimecxx
26.07.2016 22:03-5Воля гугла, что привело к основной проблеме андроида — он не может работать нормально и конкурировать с айос. На этом каждый дом заканчивается. Почему жава была выбрана тем же гуглом то же понятно, но скорее выбор в пользу типа языка, а не самой жавы, а сама жава выбрана как наиболее популярный представитель.
vtimashkov
26.07.2016 23:28+3он не может… конкурировать с айос
Аналитический отчет Gartner'аfirsttimecxx
27.07.2016 09:16Количество китайфонов никого не интересует. Отечественный автопром тоже неплохо продаётся. Тут имеется ввиду не кол-во продаж корейфонов в 3раза дешевле, а конкуренция с т.з. качества. Аккумулятор в 3раза более ёмкий, а садится телефон в 2раза быстрее. Тормозит(без топового железа лучше адроидфон не запускать, а тот что с топовым сейчас вроде как более плавный, но не то), лагает(вменяемая работоспособность не постоянна), падает(качество приложений) и не может работать вменяемо. Ту же проблему тормозов интерфейса решили пару лет назад и то усилением железа, что не является решением проблемы.
Ах да, я ненавижу эпл и за андроид(правда без жабки, но и сейчас за андроид несмотря на жабку). Но моя неприязнь к эплу всё же не позволяет спорить с объективной реальностью в которой андроид не конкурент эплу.
Taragolis
27.07.2016 10:17+3Ух ты… оказывается телефоны Apple теперь представлены в каждом ценовом сегменте.
firsttimecxx
27.07.2016 10:27-2Где я такое писал? Правильно — нигде. Телефон андроид из ценового сегмента «не топ» неюзабелен в принципе. Можно сколько угодно долго себя обманывать, но это так.
А для ценового сегмента «не топ» — есть бушные айфоны. И опять же — цена не оправдывает, когда разница в цене не порядок, а от силы 2раза. Телефон мог бы работать лучше, но он не работает и все минусы проявляются как раз такие на «не топ» сегменте.
На сам андроид никто не гонит, но факт есть факт — жава — его слабая сторона.Taragolis
27.07.2016 11:03+4>Где я такое писал? Правильно — нигде
>>он не может работать нормально и конкурировать с айос
>Телефон андроид из ценового сегмента «не топ» неюзабелен в принципе. Можно сколько угодно долго себя обманывать, но это так.
То чем пользуется человек — это его личное дело, и говорить что он себя обманывает это в корне не верно.
>А для ценового сегмента «не топ» — есть бушные айфоны.
б/у != новый
>И опять же — цена не оправдывает, когда разница в цене не порядок, а от силы 2раза.
800 USD и 400 USD — для некоторых уже существенно, а если за 200 USD будет покрывать все что нужно, то это вообще чудно.
>Телефон мог бы работать лучше, но он не работает и все минусы проявляются как раз такие на «не топ» сегменте.
Телефон перестает быть «топ»ом через пол года
>На сам андроид никто не гонит, но факт есть факт — жава — его слабая сторона.
Я не пишу под Андроид однако мне казалось, что Java это прослойка, которая потом конвертируется в Dalvik/Art, а если уж хочется всегда есть NDK.firsttimecxx
27.07.2016 14:25-1>>>>он не может работать нормально и конкурировать с айос
И как из этого следует «оказывается телефоны Apple теперь представлены в каждом ценовом сегменте.»? Правильно — никак.
>>То чем пользуется человек — это его личное дело, и говорить что он себя обманывает это в корне не верно.
Это его дело, но при объективном сравнении его выбор проигрывает. И если он с этим не согласен — он себя обманывает. Выбирать по другим критериям(доступность цены, разнообразия и прочее) ему никто не мешает и эпл будет проигрывать там, но опять же — выигрыш в одном не даёт выигрыш в другом.
>>б/у != новый
И что? Не нравится бу? Мне то же не нравится, но такое возможно и никаких проблем нет. Да и можно купить старый новый айпонт.
>>800 USD и 400 USD — для некоторых уже существенно, а если за 200 USD будет покрывать все что нужно, то это вообще чудно.
Из этого ничего не следует. Цена хоть и завышена, но в целом сопоставима с топовыми самсунгами и в 1.5-2 раза ниже с пред/топовыми китайцами.
При сравнении качества цена(+100%) роли не играет, тем более цена тут непричём. Был бы он не жаве — цена была бы идентична.
>>Телефон перестает быть «топ»ом через пол года
Не верно. Топовый телефон — это не пластиковый обмылок и с ним ничего не будет через 2года. Прогресса в железе особого нету и года 2-3 он точно будет в районе этого топа.
И под «топ»ом тут имеется ввиду не топовые попугаи в сравнении со всеми, а уровень производительности необходимый для вменяемой работы.
>>Я не пишу под Андроид однако мне казалось, что Java это прослойка
Какая разница во что там она конвертируется — рантайм на жаве, код на жаве и реализация её ограничена самой жавой как языком. Наличие мемори-модели жавы не даёт её прямиком без кастылей транслировать в натив, динамика на уровне рантайма — туда же. Сама экосистема жабы, сам тип языка не позволяет прикрутить к ней вменяемый компилятор и рантайм.
>>а если уж хочется всегда есть NDK.
И получи всё убожество побочной ветки. Опять же жава там везде торчит. Да и причём тут ндк? Дело в том, что основной язык — жава. Выбранный мною ндк не изменить выбора других. Не изменит выбора гугла.
trix
27.07.2016 11:24+4>На сам андроид никто не гонит, но факт есть факт — жава — его слабая сторона.
а откуда вы взяли этот «факт»? есть какие-то статьи, доказывающие, что вышеназванные проблемы имеются в платформе именно благодаря яве, а не чему-то еще?firsttimecxx
27.07.2016 14:39-4>> есть какие-то статьи
Смешно.
>>что вышеназванные проблемы имеются в платформе именно благодаря яве, а не чему-то еще?
Именно проблема в яве, ибо ничего другое данную проблему вызвать не может.
Доказательство — пожалуйста. Любые вменяемые приложения использую жаву по минимуму, да и не использовали бы вообще, если бы не обязывала платформа. Звонит нормально звонилка? Знай — там не жава. Работает нормально игра? Знай там не жава. Телефон не раскаляется до красна? Знай — там не жава.
trix
27.07.2016 15:24+3вопросов больше нет
firsttimecxx
27.07.2016 16:09-4Ну смотри, хотя это и слив — я помогу тебе всплыть.
Вот я назвал причину — жава. Опустим, что против этого тебе нечего сказать. Давай попроще. Если не жава, то что? Ты говоришь — другие причины — называй их. Если они не разобьются в пыль при первой же моей попытки их оспорить — так уж и быть я поверю в возможность влияния этих причин на андроид.
Bullrock777
27.07.2016 12:46+2Ну бушные гэлакси тоже ничего. У меня 4-ка, у отца 3-ка. Покупали еще новыми, кроме батареек ничего не менялось. Полет нормальный, без тормозов. Да и на них железа навалом и надежность на уровне.
LastDragon
26.07.2016 19:48- Разработка апплетов (applet)
Середина 2016 года, неужели они еще живы?
mmMike
27.07.2016 05:39У Вас есть банковская карта с чипом? Если да, то с большой вероятностью это карта с javacard OS.
То же касается и GSM SIM карт…LastDragon
27.07.2016 08:02+2Только при чем тут карты? Аплеты запускались в браузере через соответствующий плагин — в том году кто-то говорил что они используются некоторыми банками, но учитывая что npapi уже нет в хроме и (вроде) с марта следующего года не будет в FF...
mmMike
27.07.2016 08:13А ну да… в этом контексте не причем. По диагонали обзор прочитал, сразу преступив к комментариям (что чаще интересней чем обзоры)
Автор как то начал с «Сферы применения Java-технологий» и вдруг как то резко сузил исключительно до WEB технологий.
mikhailidi
27.07.2016 09:43В корп секторе — сколько угодно. Но в связи с убийством NPAPI в современных браузерах, идет миграция приложения/формы уходят на JNLP, апплеты страницы — в топку.
pengyou
26.07.2016 20:56+4Что помогло языку Java «войти в каждый дом»
Прежде всего, конечно, асимметрия информации (АИ) на зарождавшемся рынке ИТ. И последовавший вследствие АИ отрицательный отбор технологий по внетехнологическим критериям (бизнеса и потребителей).
artemgapchenko
26.07.2016 21:19+16У вас на картинке не тот Майк Шеридан; приведённый вами — это датский диджей, родившийся в 1991-м году, и по этой причине вряд ли принимавший участие в Stealth Project, запущенном в декабре 1990-го. Пруф.
KroTozeR
27.07.2016 00:03+7А что бы помогло изгнать Java из каждого дома?
LastDragon
27.07.2016 08:07-3Да вроде оно и так постепенно умирает (кроме android-а разве что), а с того момента как vs и xamarin стали бесплатными, процесс наверняка пошел быстрее.
KroTozeR
27.07.2016 08:17+1Да я не о вариациях на эту тему… Сам принцип применения виртуальной машины для бинарного кода. Спрашивается, на кой чёрт была вся эта эволюция вычислительной мощи?
pengyou
27.07.2016 09:18+1В то время люди разменяли быстродействие нативного кода на приемлимую скорость исполнения кода в VM + полностью управляемое окружение + write once run everywhere. В конце концов, люди не хотели становиться заложниками не особо гибкого окружения в осях, написанных на Си/Си++. Если постмотрите вокруг, то поймёте, что сейчас для этой же цели используются другие средства. Но цель всё та же, ведь уже 60 лет в индустрии "быстро" почти всегда значит "неудобно".
firsttimecxx
27.07.2016 10:04-3Оси итак написаны на С/С++, а на жаве ни одной. Хотспот так же написана на С/С++.
>>write once run everywhere
Надо понимать, что жава зависит от С++, поэтому С++ появится раньше чем жава. А жава появится через С++.
Непереносимость С/С++ вызвана не языком, а тем фактом, что это языки с доступным лоулевел. Там используются нативные api, там используются всякие таргет-специфик оптимизации, реализации и прочее, чего в жаве по определению нет. Если на С++ писать как на жаве — запускаться будет так же везде, вернее даже на большем числе целей, чем жава.
Переносимость — это не плюс жавы, не плюс её реализации, а плюс самого подхода(поставлять код в обобщенном представлении и собирать на таргете), но в С/С++ опенсорс мире это итак происходит — код можно взять и где угодно собрать.
Опять же в мире С/С++ уже есть реализация вм(правда времени компиляции, ибо не для жавы) сильнее жавы — это ллвм. Любой код можно точно так же собирать в байткод, оптимизировать(этого жава не умеет), а потом транслировать любым бекендом.
Все плюсы жавы как платформы — это плюсы С/С++ рантайма, ибо вм работает на уровне юзерпейса. Их можно использовать в любой С/С++ программе без вм.
У жавы осталась только динамика, но она мало кому нужна в том виде, что она есть в жаве. У С++ же есть мощные статические средства + средние динамические. У жавы статических нет вообще, кроме генериков.
>>Но цель всё та же, ведь уже 60 лет в индустрии «быстро» почти всегда значит «неудобно».
Не верно — быстро — значит квалификация уровня матчасти. «неудобно» — это очередное мифотворчество. Обычный ваятель всегда путает реализацию и интерфейс. Пользователя не должно волновать как реализовано 2 + 2 — интерфейс не меняется. Точно же и везде.
Те, кто пишут рантайм на жаве точно так же пытаются делать его быстрым(в рамках жавы конечно) и точно так же сталкиваются с тем, что «неудобно», ибо в сотни-тысячи раз больше нюансов нежели в обычной реализации.
Уровень «быстро» ещё выше — это уже понимание на уровне интерфейсов, но не это проблема жавы.pengyou
27.07.2016 10:12+2Ключевая фраза моего поста 'в то время', там не было ллвм и прочего, может вы забыли? Пацаны писали jvm на ужасном Си квалифицированно, чтобы не позорить профессию, а нормальные люди писали для бизнеса продукты, не тратя деньги и время на фаллометрию с единственно правильными программистами на неудобных языках.
firsttimecxx
27.07.2016 10:37-4>>Ключевая фраза моего поста 'в то время'
Жава появилась в районе перед нулевыми. В начале нулевых появилась ллвм.
>>Пацаны писали jvm на ужасном Си квалифицированно, чтобы не позорить профессию
Пацаны писал на том, на чём можно написать.
>>а нормальные люди писали для бизнеса продукты
Из этого ничего не следует. Жаве дал буст сам в корпоративном секторе пропихивая её, корпаративному сектору выгоден сильный вендор с поддержкой и «заботой», чего альтернативны не имели, да и альтернатив особо и не было.
А нормальные люди да — хренак-хренак и в продакшн — главное чтобы бабки платили, а тем кто платит — главное чтобы хоть что-то работало без заморочек.
Для бизнеса так же и на пхп писали, только это не делает пхп чем-то особенным — просто не было альтернативы.
>>не тратя деньги и время на фаллометрию с единственно правильными программистами на неудобных языках.
Да, писать надо много, а на квалификацию у многих нет ни денег, ни времени, ни способностей. Не всем же строить комбайны — кому-то надо на них комбайнёрить. Только вот без комбайнёров мир проживёт(любой это может делать и создать новых проблем никаких нет), а без тех, кто эти комбайны создаёт уже не обойтись. Комбайнёры могут сколь угодно долго кричать, кичиться тем, что инженерия и «сложность» — это фаллометрия и что весь колхоз и прочий бизнес на них держиться, как и земля русская, только что же из этого?
«не удобность» — это миф и враньё обоснований которому нет. Любой другой язык не менее удобен нежели жава. Чем неудобен С++, если писать на нём как на жаве прикрутив ГЦ? В какой-нибудь свивф, го? Никаких проблем.
pengyou
27.07.2016 10:47+4Рынок всё разрулил, что Вам не нравится?
И это мы пока обсуждаем java, сравниваем её недостатки с достоинствами C++, что не совсем честно. Само проникновение странного языка С/C++ в индустрию это ещё один пример асимметрии информации на рынке.
ПХП кстати в своё время продвинул индустрию вперёд, но его время уходит потихоньку.
Вообще, вы какой-то токсичный, хоть, наверное, и являетесь очень умным плюсовиком, вас что-то уязвило чтоли? Любите самоутвердиться, рассуждая о тупых комбайнёрах?firsttimecxx
27.07.2016 13:38-2Рынок всё разрулил, что Вам не нравится?
Причём тут рынок? Дело не в рынке. Если мы обсуждаем сам язык, то рынок тут не при делах. Рынок всегда разруливает так, что ширпортреб всегда популярей. Популярны фокусы, солярисы, а не мазерати — это не значит, что они лучше, либо хороши. Они доступны большинству, они вменяемо работают — от них более ничего не требуются.
Само проникновение странного языка С/C++ в индустрию это ещё один пример асимметрии информации на рынке.
Ничего странного нету. С/С++ — это смесь множества языков. Сишный диалект из С++ сам по себе, современный С++, сишный диалект из С++ с классами ака сфронт и прочее.
Альтернативы ему нет и не будет. Си с рынка не уходил никогда и как был топ1 так и остался. Собственно как и кресты — они всегда были там, где качество кода оценивается по критериям чуть шире, чем хоть как-то работает/не работает, как это происходит в мире жавы и прочих подобных языков.
>>Вообще, вы какой-то токсичный
Это ваша проблемы. Вы критику в адрес жавы экстраполируете в адрес себя, ибо являетесь её адептом. Это не верно, но вам кажется, что я что-то имею против вас. Естественно в вас говорит только защита себя через защиту жавы — не более.
>>являетесь очень умным плюсовиком, вас что-то уязвило чтоли?
Я являюсь хейтером С++ в той же степени в которой являюсь хейтером жавы. В той же степени в которой являюсь хейтером эпла. Но в отличии от вас я не строю свою аргументацию, либо мнение о чём-то на основании «нравится/не нравится». Как бы мне С++ не нравился — ему альтернативы нет.
>>рассуждая о тупых комбайнёрах?
Опять же — тупыми их назвали вы, а не я. Я привёл аналогию, которая полностью описывает ситуацию. Очередная ваша проблема заключается в том, что вы не понимаете — самоутверждение — это не только возвышение себя выше других, что вы приписываете мне. Самоутверждение это так же — приписывание себя того, чем вы не являетесь, даже если делать это до уровня «я как все», а не только «я выше».
А почему я пишу в таком стиле — всё просто — люди не могут мне оппонировать в рамках дискуссии технической и приходятся сраться на уровне доступном всем.
Научитесь не приписывать людям( в частности мне) поведение свойственное другим(в частности вам), а конкретно «я сравниваю С++ и жаву, ругая жаву потому, что я крестовик и защищаю свою кормушку/выбор, либо как это называется».pengyou
27.07.2016 14:36+1Ну, скажем так, Ваш первый коммент в этой ветке не обозначил Вас, как человека, который начинает техническую дискуссию. Поэтому смешно видеть ваши претензии на роль судьи и прокурора одновременно, мол вокруг все тупые, поэтому вы не будете нормально общаться, а будете сыпать баззвордами и самоутверждаться. Успехов вам.
firsttimecxx
27.07.2016 15:57-1Меня не интересует что там и кто кого и как обозначил. Смешно видеть, как попытался и слился, а что-то говорить в мой адрес, при этом сливаясь — верх идиотизма.
В конечном итоге все расставлено на свои места. Тот, кто обвиняет меня слился. Тот, кто обвиняет меня не может ничего не мне ответить, кроме банальных шаблонных сливов про «заворды», «самоутверждение», «все вокруг тупые» и прочее.
pengyou
27.07.2016 16:38+3Ой, простите, выше Вы что-то курлыкали про дискуссию, а теперь про какие-то сливы, идиотизм и прочую фаллометрию. Это называется полемика, если Вы не в курсе, а Вы не в курсе, то есть, Вы как тот голубь, с которым в шахматы играли. Слился, слился, курлык.
firsttimecxx
27.07.2016 17:14-3>>Ой, простите, выше Вы что-то курлыкали про дискуссию, а теперь про какие-то сливы, идиотизм и прочую фаллометрию.
Действительно. У нас есть факт, как амёбка начала мне кукарекать про рынок, жабка, кресты и прочее. После моего ответа, где я разобрал «рынок, жабку, крестовиков и прочее» данная амёбка обделалась, ничего не ответила и начала нести херню.
Слился? Да.
>>Это называется полемика, если Вы не в курсе, а Вы не в курсе, то есть, Вы как тот голубь, с которым в шахматы играли. Слился, слился, курлык.
Мне без разницы на то какие потуги ты предпринимаешь для слива — ты либо отвечаешь по теме, либо не отвечаешь. Не ответил — обосрался. Всё просто.
Ещё раз — потуги про голубя и прочие отмазоны котируются в районе твоей парты, с соседями по парте. Нахрена ты мне сюда постишь эти потуги уровня детсада?pengyou
27.07.2016 17:31+2Чем хороша фраза "сам пошутил — сам посмеялся"? Тем, что она отлично описывает ситуацию внутри Вашей головы, мой юный друг. Если в 2016-м до Вас ещё не дошло, что Ваше личное мнение о содержимом Ваших комментариев не имеет никакой ценности в ситуации спора вне Вашей собственной головы — это очень печально.
И, внезапно, если вы курлыкнули немного бреда, то оппонент вообще не обязан поддаваться приступу оверквотинга и разбирать каждую Вашу "ценную мысль". Иногда случается даже так, что Ваш коммент представляет собой пустую трату байтов, вне зависимости от того, что там думают Ваш внутренний судья (он же прокурор).
firsttimecxx
27.07.2016 19:58-5Да, да, да. Смешно-смешно. 2016 и прочие мемчики школоты, но балабол пытается из себя что-то строить.
Ещё раз — мог бы ты что-то — ты бы не обделался, а не мог бы я больше тебя — я бы не победил. Всё просто.
>>Ваших комментариев не имеет никакой ценности в ситуации спора вне Вашей собственной головы — это очень печально.
Пока ты этого не доказал — твои потуги ничего не стоя, опять же — мой коммент — это ответ на твои потуги. А коли после моего ответа ответа от тебя по теме не последовало, а не по теме последовало — вывод один — ответить нечего, либо обделался/слился.
>>И, внезапно, если вы курлыкнули немного бреда, то оппонент вообще не обязан поддаваться приступу оверквотинга и разбирать каждую Вашу «ценную мысль».
Опять потуги убогие. Я могу тебя спросить за бред и ты обделаешься, как ты обделался по-теме, но зачем. Ты предпринял попытку спорить и ты пытался до определённого момента, если бы всё реально было так как ты сказал — ты бы написал это сразу, а не тогда, когда тебя загнали в угол. Либо хотя-бы ответил по теме, а потом начал кукарекать.
В конечном итоге всё просто — обделался, начал нести херню. Обосрался и здесь. Теперь уже пошли совсем детсадовские отмазки «я не обязан отвечать» — ты обязан — ты начал, тебя никто не заставлял. Начал спорить и съехал — проиграл.
>>Иногда случается даже так, что Ваш коммент представляет собой пустую трату байтов, вне зависимости от того, что там думают Ваш внутренний судья (он же прокурор).
Опять лсный балабол пытается себя приписать к байтам, да и вообще к теме. Смешно.
Споря с тобою — я не думаю — в этом нет смысла. Вернее как — я пытаюсь писать сдержано, дабы не ты не пошел доносить на меня. Хотя именно это ты и пытаешься сделать.
Как я уже сказал — очередная малоразвитая амёбка что-то строит из себя пытаясь взывать к публики таких же амёбок. При этом итак ясно кто победитель и почему. Каждый день по десять штук таких в спорах со мною обеделываются и их потуги ничего нового для меня не представляют, ибо все как под копирку один в один. Хотя все вылезли из одной парты и действуют по одной агитке.
Попытайся хоть что-то высрать мне по-теме.
guai
27.07.2016 14:09+2А где так-то уж ява в повседневной жизни отъедает много вычислительной мощи? Разве что в телефоне.
В энтерпрайзе вполне понятно, на что променяли эту вычислительную мощь — на количество запиленных проектов, на большие команды менее хардкорных прогеров, на здоровенные проекты, которые до того не каждый бы потянул.
А о том, что вообще-то можно было бы сделать более простые в применении языки без жертв, начали задумываться только недавно.
Hidralisk
27.07.2016 10:17+6«Java умирает» очень похоже на «Запад загнивает» времён СССР.
Я не совсем уверен в смерти языка — который является самым полулярным в университетах и различных курсах.
Люди стартуют именно с java в большинстве случаев.LastDragon
27.07.2016 10:41-2Популярность в "университетах и различных курсах" вообще ничего не значит (+оно отстаёт от рынка на несколько лет), в реальности нужно совсем другое (имхо .net сейчас гораздо перспективнее).
asurkis
27.07.2016 13:28+1Не холивара ради, я совсем не осведомлён в этом плане (профессиональным разработчиком вообще не являюсь), и потому мой комментарий может основываться на неверных данных
Java же вроде годится и для разработки серверных приложений. Можно ли .NET без заморочек запустить на сервере под управлением чего-то кроме Windows Server? Ведь вроде как на серверах сейчас в большинстве случаев стоят UNIX-like операционные системы. Или Windows Server сейчас достаточно дешёвый, чтобы ставить именно его?
На счёт серверных приложений не на Java или .NET, они разве не являются менее производительными?
То есть причин для «смерти» Java по крайней мере в этом секторе я совсем не вижу, и хотелось бы понять, почему это может произойти.LastDragon
27.07.2016 14:22+1Аsp.net вроде везде работает https://www.microsoft.com/net/core
asurkis
27.07.2016 14:42Хм, что ж. Действительно. Спасибо, не знал
P.S. О, там даже предоставляется наглядная инструкция по установке на различные ОС. Вообще супер.
asurkis
27.07.2016 15:09А, да, ещё один вопрос тогда. Как обстоят у .NET дела с совместимостью между версиями? Ведь это же вроде тоже важный момент
Просто помнится мне один неприятный момент, правда, связан не с .NET, а с Visual C++ Community Edition, что проект, созданный в VS 2013 не открывался в VS 2015.
К тому же, пользовался несколькими приложениями, написанными на Visual C++, и каждый установщик таких приложений тащил на себе нужную только ему версию MSVC++ (например, «Microsoft Visual C++ 2008 Redistributable — x86 9.0.30729.17», а в другом приложении то же самое, только не 17, а 4974)
То, что на сайте загрузки .NET (https://www.microsoft.com/net/download) есть разные версии, наводит на мысли, что приложение, созданное, допустим, с .NET 3.5 SP1 не запустится на .NET 4.6.1lair
27.07.2016 18:04А, да, ещё один вопрос тогда. Как обстоят у .NET дела с совместимостью между версиями?
Нормально.
наводит на мысли, что приложение, созданное, допустим, с .NET 3.5 SP1 не запустится на .NET 4.6.1
Не запустится. Нужно будет доставить 3.5 (они живут side by side).
asurkis
27.07.2016 18:25Вот то, что между разными major-версиями (в указанном случае — 3.5 SP1 и 4.6.1) нет совместимости, печально. Впрочем, с учётом того, что всё же .NET живёт и процветает, это не является серьёзной проблемой, ведь так?
lair
27.07.2016 18:54Это вообще не является проблемой, вы просто приносите дистрибутив с собой. Между предыдущими версиями (1-3) совместимость была, и это привело к тому, что дистрибутив разросся до невозможности.
asurkis
27.07.2016 19:28Просто мне казалось, что дистрибутив тоже порядком места занимает. По крайней мере в сравнении с небольшими приложениями. Т.е. из прикладных программ, которые могу сейчас вспомнить — PascalABC.NET, где полный дистрибутив — 66 мегабайт, а без .NET — 8 мегабайт.
Впрочем, ещё остаётся у меня вопрос, а именно: не возникает ли проблема, что пользователь может попытаться запустить программу разными версиями .NET? Или в исполняемом файле прописана версия, на которой он должен запускаться, а виртуальная машина подбирается автоматически?
Впрочем, да, начал я про сервера и кроссплатформенность, закончил про размер дистрибутива и совместимость между версиями.lair
27.07.2016 19:34Просто мне казалось, что дистрибутив тоже порядком места занимает.
Есть нюансы. Скажем, на Win 10 и на каком-то сервере, на который я недавно смотрел .net 3.5 просто идет из коробки, но по умолчанию выключен. Включаете фичу — приложение запускается. Если это не ваш случай — включете в инсталлятор ссылку на скачивание (и только если локально нет). И вот только если вы параноик, вы реально тащите за собой дистрибутив. Другое дело, что банально зачем сейчас писать приложение под 3.5?
Или в исполняемом файле прописана версия, на которой он должен запускаться, а виртуальная машина подбирается автоматически?
Там прописаны зависимости, поэтому да, версия будет выбрана автоматически.
asurkis
27.07.2016 20:26Другое дело, что банально зачем сейчас писать приложение под 3.5?
Сейчас, наверное, незачем. Но ведь наверняка найдутся приложения, которые написаны когда-то давно, и уже больше не поддерживаются, но при этом захотелось воспользоваться без переписывания кода/перекомпиляции. Собственно, я это имел ввиду.
Там прописаны зависимости, поэтому да, версия будет выбрана автоматически.
Это хорошо. Просто у меня были сомнения по этому поводу.lair
27.07.2016 20:32Но ведь наверняка найдутся приложения, которые написаны когда-то давно, и уже больше не поддерживаются, но при этом захотелось воспользоваться без переписывания кода/перекомпиляции.
В зависимости от версии ОС, у вас скорее всего либо уже будет 3.5, либо его можно включить. В остальных (очень редких) случаях его придется доставить.
asurkis
27.07.2016 21:02Что ж, хорошо если так.
Кстати, есть один момент, который в .NET для меня всё ещё остаётся аргументом против создания приложений на новых версиях, хотя и почти незначимым — это отсутствие официальной поддержки старых ОС в новых версиях .NET.
Приведу конкретный пример: у меня стоит Windows Vista SP1, официально .NET 4.5.1 не поддерживается. Поставить SP2 по какой-то неизвестной мне причине не удалось (увы, почему сорвалось обновление виста не сообщает), соответственно, последняя доступная мне версия — .NET 4.0.
Впрочем, это исключительно моя личная проблема, которая не проявит себя у подавляющего большинства людей, у которых почти наверняка стоят актуальные версии ОС.
К слову сказать, старые ОС не поддерживает не только Microsoft .NET, но также Google Chrome, Python 3 (из того, что я могу сейчас вспомнить), наверняка ещё что-нибудь широко известное.
На самом деле, я могу себе представить, насколько сложно поддерживать разные версии софта, так что «камнем в сторону Microsoft» (или кого-либо ещё) это не является.lair
27.07.2016 21:04Тут дело традиционное: хотите новых фич — рано или поздно вам понадобится новая ОС. Делать внутри BCL разные ветки кода под разные ОС — дорого (и очень дорого).
А конкретно взятая Vista, насколько я знаю, вообще уже не поддерживается, так что нет ничего удивительного в том, что под нее нет нового софта.
asurkis
27.07.2016 21:34Да, это всё, безусловно, верно. Рано или поздно новая ОС понадобится.
А на счёт Vista — тут, насколько я знаю, есть ещё и огромное количество багов. Например, периодически процесс explorer.exe начинает кушать весь CPU (в отсутствие каких-либо действий с моей стороны вообще), в результате чего приходится его убивать и запускать заново. Ну и уже упомянутый мной баг с невозможностью обновления.
Хотя, официально поддержка продолжится до 11 апреля 2017 (поправьте, если взят неверный источник), я всё же рассчитываю раньше обновить железо и софт.
Собственно, в принципе, сижу с Vista только потому, что умудрился сжечь основной ноут, так бы, безусловно, этот комп так и пролежал на полке в кладовке.
mrsantak
27.07.2016 19:15Так вроде бы в этом весь смысл мажорной версии — её увеличивают только когда меняется обратная совместимость.
asurkis
27.07.2016 19:31Что ж, да, конечно. Это я не учёл. Просто в той же Java major-версия вроде как до сих пор не изменилась (если посмотреть, то свежая JVM имеет версию 1.8*). Хотя, не знаю, возможно, что несовместимые изменения API и происходили.
mrsantak
27.07.2016 21:14Да, в Java обратную совместимость не нарушали никогда (если конечно не завязывать на недокументированный функционал, типа способа работы String.intern или Unsafe). Поэтому мажорная версия там единичка.
Хорошо это или плохо — спорный вопрос. С одной стороны круто, что код написанный в бородатые времена на Java 1.0 будет работать до сих пор.
А с другой стороны стороны в Java из-за этого висит куча классов с невменяемым API. Например я для всех своих проектов тяну сторонние библиотеки для логирования и парсинга XML, хотя формально все это есть в стандартной библиотеке.
И опять таки, все это относится исключительно к JavaSE. В JavaEE обратную совместимость нарушается, но что-то я не видел чтобы кто-то жаловался что EJB 2.0 не поддерживаются в Java EE 7.asurkis
27.07.2016 21:57+1Ну, это я просто к тому, что когда-то давно мне казалось, что обратная совместимость между версиями — нечто само собой разумеющееся (именно из-за Java), и я был тогда очень удивлён, что между теми же Microsoft Visual C++ Runtime (который, собственно, всегда висел у меня в системе в нескольких инкарнациях, просто обратил на это внимание я значительно позже) этой самой обратной совместимости нет.
Сейчас же я не особо удивлён тому, что нет совместимости между версиями .NET
На счёт XML, да, посмотрел я на пример использования. Действительно, имело смысл сделать несколько проще. Правда, не совсем вижу причины использования сейчас (когда есть более удобные форматы, например JSON) именно XML (за исключением HTML и программ, где XML использовался до появления более удобных форматов). Можете пример задачи, где использование XML является самым удобным решением?mrsantak
27.07.2016 22:53Практически любой документ со сложной структурой, который есть необходимость править руками. Например конфиги или дескрипторы развертывания. За счет наличия XSD схемы XML легко проверить на валидность. За счет той же XSD во многих IDE работает автодополнение. По XSD можно даже автоматом сгенерить объектную модель.
Если требуется обработка больших объемов XML, то на помощь приходит XSLT и XQuery.
А еще в json нет неймспейсов.
Если же работать с документом как с DOM деревом или мапить его на объекты, то разницы между форматами по сути и нет — все равно всё спрятано за библиотеками.
А насчет HTML:
А вы взгляните на reactjs — там есть virtual dom, который как раз представляет html в виде json. Просто сравните:
<p class="lead"> <span>A JavaScript library for building user interfaces </span> <a href="http://facebook.github.io/react/">React</a> </p>
и
{ tag: 'p', attrs: {className: {'lead': true}}, children: [ { tag: 'span', children: 'A JavaScript library for building user interfaces ' }, { tag: 'a', attrs: {href: 'http://facebook.github.io/react/'}, children: 'React' } ] }
asurkis
27.07.2016 23:08Хм, да, что ж. Действительно, я почему-то не подумал про весьма основные элементы XML — имена тегов и их атрибуты.
Спасибо, буду знать.
dougrinch
27.07.2016 22:10Да, в Java обратную совместимость не нарушали никогда (если конечно не завязывать на недокументированный функционал, типа способа работы String.intern или Unsafe).
Ну, все-таки, это не совсем правда.
mrsantak
27.07.2016 22:56А можно подробнее? А то я что-то такое уже не в первый раз слышу, но реальных примеров за 6 лет не наблюдал. Да и быстрое гугление не выдает чего-то вразумительного.
dougrinch
27.07.2016 23:29Обо что спотыкался я сам:
- Обратная совместимость исходников — в 5ке добавили ключевое слово enum. Все "Enumeration enum = ..." перестали компилироваться.
- В 8ке метод ConcurrentHashMap.keySet() в сигнатуре поменял возвращаемое значение с java.util.Set на java.util.concurrent.KeySetView — на уровне сорцов все хорошо, но бинарной совместимости нет.
В принципе, это мелочи, первое лечится через grep/sed, второе простой перекомпиляцией. Но факт остается фактом — обратная совместимость таки ломалась.
ivnik
27.07.2016 13:32LastDragon
27.07.2016 14:15Ну и как "индекс, оценивающий популярность языков программирования, на основе подсчета результатов поисковых запросов вида +" programming" коррелирует с нужностью языка? А насчет гитхаба тоже не все так просто: java там представлена тем же eclipse и прочими большими проектами, а проектов на c# (хотя .net это не только c#) там вроде никогда особо не было. Да и со стороны посмотрите на то как развивается java (очень медленно) и .net (быстро), так что будущем неизвестно что будет (но лично я ставлю на .net).
ivnik
27.07.2016 14:41Прямой корреляции нет, но косвенно, по количеству запросов, можно судить о востребованности языка. Статистика по гитхаб определят больше популярность языка в opensource. И ещё, в статистике не объём репозиториев, а их количество (поэтому на 1-м месте javascript с кучей мелких репозиториев), т.е. объём eclipse не играет роли. Действительно, репозиториев на c# возможно мало из-за того, что он не популярен в opensource. У c# и экосистемы .net узкая ниша разработки под платформы на базе windows (я знаю про mono), которая сейчас не так популярна, как в 2000-х.
Про развитие языка, я согласен с тем, что java по количеству вносимых фич давно отстала от c#, в этом есть как плюсы так и минусы. Тем кому нужны фичи и новые возможности мигрируют на другие языки, не меняя платформу jvm — scala, clojure, groovy.
С# я практически не знаю, но мне кажется по богатству возможностей scala его опережает. Тем не менее scala не так уж и популярна из-за своей сложности (высокий порог входа для новичков), т.е. простота языка java это в какой-то мере плюс.LastDragon
27.07.2016 14:57У c# и экосистемы .net узкая ниша разработки под платформы на базе windows
Так и было когда-то, но последние пару лет ms очень активно вкладывается в opensource (почти весь .net по сути выложили), а уж как они меня (и скорее всего не только меня) удивили когда сделали бесплатной сначала visual studio pro (в т.ч. и для коммерческой разработки), а потом и купленный совсем недавно xamarin… Поэтому имхо java придется как минимум потесниться.
ivnik
27.07.2016 13:39+1LastDragon
27.07.2016 14:32Там не 2014 год, кстати?
ivnik
27.07.2016 14:43Да, похоже что 2014. Но количество проектов на java на конец 2014 в 4 раза больше чем c#, не думаю что за два года пропорции существенно изменились.
taujavarob
27.07.2016 17:22+5Скучная статья.
Было всё веселее.
Жил был один инженер которому поручили разработать ПО для пульта телевизора. Писал код он на С.
Дело было новое и железо ему приносила часто новое и разное.
И запарился он иметь зоопарк своих программ на С под разное железо для пульта.
Пришёл он однажды к своему руководству с заявлением на увольнение.
Руководство его формально спросило — причина увольнения?
— Да, запарился я с вашим изменением железа, — сказал он. — Мне приходится по пол-программы переписывать, — приврал он маленько.
В это время у руководство чего-то сидел Гослинг — который обычно ездил по универам на конференции и слушал о новинках в разработке ПО.
А в то время не только все в универах то бредили ООП, но и интенсивно обсуждали виртуальные машины.
Вот Гослинг и сказал инженеру по пультам — Не увольняйся пока, я тут новую штуку придумал — пишешь один раз, выполняется во всех пультах для телевизора.
…
Язык назвали Oak — что на жаргоне означало коньяк.
Но когда дело дошло до маркетологов, те сказали, не гоже программистам пить алкоголь.
Стали выбирать: чай, молоко, пиво, вино, виски, сок, шампанское и сидр. Остановились на кофе — на жаргоне это Java.
(Кстати, когда Java уже взлетело, то пришедшему программисту со своим простым языком для обработки нажатий на странице, маркетологи сразу же сказали, что язык его будет называться JavaScript и надо также добавить оператор new.
Но зачем, спросил программист, — у меня же нет ООП.
Неважно, добавь, — сказали ему маркетологи. — За пару недель уложишься?)
И наступил 1995 год и Java взлетел — шума было много. Почти как C, но реализация ООП проще чем у С++.
Про то, что Java был придуман как язык для написания ПО для встроенных систем типа пульта телевизора, сразу же забыли ибо наступили годы Интернета. — Что то надо было приспособить для рисования картинок в броузере. И для этого привлекли Java.
Если бы в 1995 году кто-то сказал, что Java станет (займёт место Кобола) языком для Энтерпрайз систем — его бы в дурку послали.
Вывод: Неисповедимы пути Господне. (С)
taujavarob
28.07.2016 18:49Даже преподносимая сейчас в качестве главной инновации Java идея не зависящих от платформы мобильных программ в сочетании с генерацией кода в процессе выполнения еще раньше появилась в ETH. Выполненная под руководством Вирта диссертация автора этих строк [Франц 94] посвящена описанию динамически расширяемой системы, в которой исполняемый объектный код «на лету» порождается из промежуточного машинно-независимого формата. В этой диссертации, опубликованной на английском языке в феврале 1994 г., т. е. более чем за год до самой первой презентации Java, уже появляется слово applet и описывается ряд сценариев, весьма сходных с существующими сегодня на Java. В настоящее время автор работает над дальнейшим развитием своей системы, обладающей несколькими преимуществами по сравнению с Java [Франц-Кистлер]. В связи с этим может быть интересно то обстоятельство, что в марте 1994 г. автором был прочитан в Калифорнии ряд докладов по теме диссертации, причем один из них — в Sun Laboratories, Inc. Кроме того, упомянутый выше Билл Джой, который переориентировал проект Java на WWW, стал одним из первых обладателей лицензии на Оберон-систему ETH, и в конце 1994 — начале 1995 г. он неоднократно связывался с ETH; в процессе контактов выяснилось, что он читал мою диссертацию.
Такие вот разборки были.
anasana
27.07.2016 19:14Никак не могу найти «ветку» Java-интерпретатора под линейку машин PDP-11 от d|i|g|i|t|a|l.
Может кто-то слышал, была ли подобная разработка.Kemet
28.07.2016 05:47Несколько лет назад я натыкался на исследовательский проект, но там были только тезисы и диссертация, сам проект был недоступен, на письмо автор ответил, обещал предоставить код, но потом куда-то пропал. А потом и у меня интерес пропал.
Kemet
28.07.2016 05:36Перевод статьи Микаэля Франца Java: критическая оценка МИР ПК #08/97
taujavarob
28.07.2016 18:48-1В качестве профессора американского университета я должен приветствовать Java уже по той причине, что этот язык позволяет безболезненно отказаться в преподавании от дидактически несостоятельных Си и Си++. Java представляет собой приемлемый компромисс: современный язык программирования, разработанный в традиции, близкой к Паскалю, Модуле-2 и Оберону, но с сознательной попыткой замаскировать это синтаксисом, сходным с синтаксисом Си. В качестве практика я, таким образом, приветствую язык Java везде, куда он планомерно входит как альтернатива Си или Си++. Однако те, кто уже обрел столь же мощный, но эстетически более совершенный язык программирования, такой как Оберон или Ада-95, спокойно могут держаться за него, не боясь оказаться в невыгодной «языковой ситуации».
Профессор оказался не совсем прав с Оберон и Ада-95.firsttimecxx
28.07.2016 21:47-3>>Java
>>альтернатива Си или Си++
>>Java
>>альтернатива
Спасибо — посмеялся.
>>Паскалю
>>такой как Оберон или Ада-95, спокойно могут держаться за него, не боясь оказаться в невыгодной «языковой ситуации».
Вся квалификация в одном предложении. Вернее её отсутствие. Мне жаль тех, кто ему поверил. Они оказались на задворках.
До появление жавы они воспевали «суперязыки» будущего, который дохли один за другим в небытие.
А по поводу «почему жава» — ну во-первых жава требует намного более низкой квалификации от данного «профессора» и шансы у оного осилить тот же С++ равны нулю, а уж про реальный си я даже заикаться не буду. Учить проще. Проверять проще. Но это всё не важно.
Основная причина — все эти вузы в сша сидят на грантах больших корпораций. Кто стоял за C/С++? К тому моменту дохлая Bell labs? А кто пропихивал жабку? Сан + корпоротивный сектор, который был опутан связями с сан и прочими вендорами, которые требовались новые адепты. Естественно С++ их не интересовал как излишне сложный и никакой в тот момент, хотя дава была ещё более никакая, но всяко лучше С++.
То же самое твориться и в вузах рашки(в центральной не так сильно), а вот на периферии и снг — во все поля — все под майкрасофтом как и этот ресурс. И точно так же «сишарпик наше всё, маздайка — наше всё и С/С++ не язык».
Всегда выгодней учить тому, что проще и тому, за чем стоят серьёзные дяди которые дадут пирожок и за кадры и за выбор. Особенно если эти дяди нас кормят — им не откажешь.
undefined7
28.07.2016 09:11http://www.tiobe.com/tiobe_index — языковый рейтинг по количеству квалифицированных инженеров, курсов и ранжированию в поисковых системах. Пока Java лидирует.
Old_Chroft
28.07.2016 14:47Мне интересно кто такой «Семен Гринштейн». Вас сколько? Постоянно с нулевыми публикациями — и тут такой выстрел. И на фотке «Sun + Oracle» видно, кого дернули за яйца и кому по**й.
DarkOrion
А в чем измеряется вертикальная шкала на первом графике? 35 миллионов чего, устройств?
Shapelez
Скорее всего это скриншот Google Trends, то есть — поисковые запросы.
samizdam
Google Trends в 90-потёртом году? Я чего-то не знаю?
Вероятно, конечно, всё же некий trend(«java programming») в вакууме, но что, интересно, значат провалы в ноль, до и после 2000…