Недостатки, говорите...
1. Ну с... Одна и та же программа с одним и тем же алгоритмом... В лазарусе загружала с данными 85 мегабайт, в C# 120 мегабайт. Явовская версия ни с того ни с сего вдруг захотела 790. Де факто.
2. Что-то не встречались мне на яву нормальные конструкторы интерфейсов, а городить форму вручную, опираясь на совершенно шизоидную модель обработки сигналов и их перехвата - отнюдь не очень производительно. У лазаруса тож не блестящие обработчики, но хотя бы визуальный конструктор, в общем случае не надо просчитывать, что и куда растянется, что и куда передаст клавиатурный ввод и т.п. Графический интерфейс явы, кстати а) очень медленный и б) нарисован для операционной системы "как картинка" со всеми вытекающими отсюда явлениями. В частности, хрен вы сторонней программой "нажмете" на какой-нибудь элемент управления - это всего лишь координаты области рисования.
2а. Обратите внимание на стандартный интерфейс swing: это, блин, нечто архаичное, собранное из серых полосок. А выглядеть программе одинаково в разных ОС (кроме этого metal) не дают лицензионные соглашения: под linux нельзя рисовать элементы управления, выглядящие "как GDI", под windows недоступны элементы управления x-windows. Хотя, в этом есть что-то.
3. В яве все параметры в функцию передаются только по значению. Это достаёт. Причем, потом таки узнаешь, как параметры в функцию передать по ссылке.
Еще та методика. Примерно как операция по удалению геморроя через горло.
4. Ява легко декомпилируется в читаемый вид, близкий к оригиналу. Более того, можно в общем случае без декомпиляции напрямую запускать код из сторонних программ, использовать их объекты.
5. В яве чертовски урезанный набор базовых типов. Нет, например, беззнаковых. Вообще. Тоже доставляет. Как и набор классических решений явы "что нужно сделать, чтобы прочитать байт в int, что нужно сделать чтобы записать int в байт и подобное.
6. Чистое imho. Считаю, что человек, которого [нормально] научили программировать на яве, так на ней и останется навсегда. Освоить что-либо другое ему будет сложно и противно.
7. Система принудительного отслеживания exception. Достаёт. Всё требует заворачивать в try, иначе код просто не компилируется.
8. Как тут выше уже поминали, требует установки исполняющей системы. Исполняющая среда, правда, ставится быстро и обычно без проблем (в отличие от .net framework). Проблемы начинаются, когда исполняющая среда отличается от той, на которую рассчитана программа. Особенно доставляет разница в обработке растровой графики Oracle JAVA и OpenJAVA.
9. Книги по JAVA в основном - говно. И чаще всего описывают сто лет назад не используемые на практике и списанные временем технологии.
10. Чтобы программировать на JAVA, нужно знать, КАК то или иное делать и какими средствами. Сам можешь ни в жисть не догадаться. Особенно опираясь на учебники, которые см п. 9. Проверить п.9 - элементарно: ищем главку, посвященную посимвольной обработке строк. Нет упоминания о том, что символ может состоять из более чем одной кодовой точки и того, как с этими кодовыми точками работать - учебник точно говно.
11. Информация по JAVA широко представлена в инете. Обильно перемешанная с г-ном. Требуется большое искусство отделить ценные сведения от мусора. Мусора и заблуждений гораздо больше.
Добавлено спустя 3 минуты 42 секунды:12. JAVA и JavaScript - это разные языки. Вообще разные.
Добавлено спустя 47 секунд:Перечисления достоинств надо?