LINUX.ORG.RU

Будущее Java или ломаем backward compatibility полностью

 ,


1

8

Как известно, за 20 лет существования Жабы, накопилось и обнаружилось целая охапка проблем, связанных с кривым дизайном, реализцией, отсутствием нужных фишек и синтаксического сахара.

А что если с 10-й версии исправить все эти проблемы, полностью игнорируя обратную совместимость? Назвать например новую версию Жабы как Java X и развивать данную версию парралельно со «старой». Те, кому нужна обратная совместимость, будут сидеть на старых версиях, а те, кто начинает проект с нуля - пересядут на новую. Со временем все перекочуют на Java X, и необходимость в старых версиях отпадет навсегда.

Текущие проблемы Java:

  • checked exceptions
  • Отсутствие беззнаковых типов, вследствии чего имеем кривой API и трудности работой с сетью.
  • Убогие Generics, которые дженериками и не являются
  • Примитивные типы не являются объектами. Существуют убогие костыли-обертки, которые уродуют концепцию
  • Длина массивов не может превышать Integer.MAX. Огромные массивы не поддерживаются
  • Отсутствие Properties. Геттеры и сеттеры раздувают код и делают его нечитабельным
  • Кривой дизайн Cloneable и Serializable
  • Целый зоопарк всяких языков (Scala, Kotlin etc), которые по факту используют legacy JVM со всеми ее недостатками, пытаясь как-то выправить ситуацию и облегчить жизнь разрабов.

В общем комментируем, кто что думает по этому поводу.

Перемещено leave из general

Ответ на: комментарий от FilosofeM

в Си вообще все является числом

как ты живешь зная это?

объясни

непонимаю

uhuhu222
()

Да, generics жутко кривые из-за type erasure.

Я бы еще добавил сюда:
- слабоватая система типов
- отсутствие first-class functions
...да много чего!

Другое дело, если это не устраивает в Java, то зачем ее ломать, если можно использовать Clojure/Kotlin/Scala/любой другой ЯП?

kovrik ★★★★★
()
Ответ на: комментарий от Lavos

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

cdshines ★★★★★
()
Ответ на: комментарий от filequest

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

Нет, Java — бастард.

anonymous
()
Ответ на: комментарий от RiseOfDeath

Ну так они небось использовали что-то нехорошее? У меня при смене вендора JVM переставала функциональность работать, но это было из-за того, что злобные буратины использовали классы из com.sun.* или sun.misc.*, не помню уже.

Deleted
()
Ответ на: комментарий от unt1tled

У меня софт как-то не собирался когда вектор стал депрекейтед.

Но вектор не депрекейтед, с чего ты это взял?

Пофиксили чтоли?

Я не в курсе, о какой именно проблеме ты говоришь. Vector из стандартной библиотеки никто никогда не убирал.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

Мне нетбинс его пометил как депрекейтед и отказывался собирать, пока не заменю на ArrayList.

Что вызвало у меня невероятный батхерт в то время. Год был кажетсо десятый...

unt1tled ★★★★
()
Последнее исправление: unt1tled (всего исправлений: 1)
Ответ на: комментарий от Deleted

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

P.s.

К стати, речь идет о майнкрафте и бакките, они оба так себя вели у меня.

RiseOfDeath ★★★★
()
Последнее исправление: RiseOfDeath (всего исправлений: 3)
Ответ на: комментарий от RiseOfDeath

Ну это все примеры кривой сборки и т.п. Если правильно бинарник собрать, то он у тебя и через 10 лет запустится на современной Java 14. Знаю один пример, когда просрали исходники, а собранный бинарник пережил апгрейды JVM 1.5 -> 1.6 -> 7 и уже наверное на 8 и жил он сначала на серваке под win2k3, а потом на линукс переехал. Короче кроссплатформенность и обратная совместимость работает.

Deleted
()

Ты хочешь сделать еще один дотнет? Но зачем, когда один дотнет уже есть?

morse ★★★★★
()
Ответ на: комментарий от unt1tled

Видимо какие-то загоны нетбинса. Собирать лучше всего maven-ом из консоли.

Legioner ★★★★★
()

checked exceptions

От них постепенно избавляются в JDK переводя на RuntimeException

Отсутствие беззнаковых типов, вследствии чего имеем кривой API и трудности работой с сетью.
Примитивные типы не являются объектами. Существуют убогие костыли-обертки, которые уродуют концепцию

На это не пойдут, сто раз обсуждалось

Убогие Generics, которые дженериками и не являются
Длина массивов не может превышать Integer.MAX. Огромные массивы не поддерживаются

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

Отсутствие Properties. Геттеры и сеттеры раздувают код и делают его нечитабельным

Юзай lombok, если тебя это напрягает. Впрочем, я был бы не против, если этот lombok завезли бы в джаву официально.

foror ★★★★★
()

Тебе нужен Kotlin.

anonymous
()
Ответ на: комментарий от Lavos

Ты чего про комптлятор вякнуло, дебилище?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.