LINUX.ORG.RU

Пользуется кто-нибудь OpenJDK?


0

4

Сабж. Пользуется кто-нибудь OpenJDK? Им вообще можно пользоваться? :)

Хочу добавить в жабку препроцессор. Чтобы, например, как в ObjectiveC можно было вместо написания уродского хлама геттеров-сеттеров писать «@synthesize (options) field», которая будет генерить их в момент сборки. Кроме синтезаторов можно еще кучу плюшек надергать из других языков. Можно опуститься даже вплоть до того, чтобы писать на java с ассемблерными вставками ;)

Проблема в том, что чтобы сделать это красиво, чтобы макросы выглядели неотличимо от элементов языка (а не в кривом препроцессорном стиле «#ifdef #ifndef» :) нужно иметь хорошую грамматику, которая не похерила бы код нафиг. Наброски грамматики есть для OpenJDK.

Осталось установить: разумно ли им (openjdk) пользоваться вообще, пользуется ли им кто-то на самом деле, и испытывает ли кто-то ограничения от возможностей жавы (от их отсутствия)?

Не в development ибо приветствуется срачобсуждение, а не экспертные ответы.

★★★★☆

Последнее исправление: stevejobs (всего исправлений: 1)

> Не в development ибо приветствуется срачобсуждение, а не экспертные ответы.

Вот это по-нашему!

r_asian ★☆☆
()

Думаю вполне можно, в тех местах где его(опенждк) не рекомендуют юзать он вполне ок справляется

nutz ★★
()

Пользуюсь OpenJDK6 и недавно перешёл на OpenJDK7. RSSOwl работает. Tomcat работает. Jetty работает. Geronimo работает.

Eclipse собирается и работает пока только с OpenJDK6.

iZEN ★★★★★
()

Пользуюсь openJDK для обычных десктопных приложений. В разработке немного пробовал, никаких проблем не заметил.

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

а как тебе идея с макросами? Хотелось бы каких-нибудь вкусненьких горяченьких макросов? Выдвигай предложения!

stevejobs ★★★★☆
() автор топика

Аннотация то еще нормально (только java же, с большой буквы), остаемся в рамках языка. Но расширения синтаксиса языка не нужны, если я правильно понял.

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

У меня на Java 7 вебстарт не запускался, никакой

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

> Но расширения синтаксиса языка не нужны, если я правильно понял.

why? Тебя еще не задолбало генерить тонны кода командой «сгенери мне три страницы геттеров-сеттеров»? А уровни доступа к коду и рефлекшн? А неуправляемый GC и чудовищный прямой доступ к памяти? А уродское управление внешними процессами? Список можно долго продолжать..

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

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

Эти либы работают в рамках стандартного потяного синтаксиса. Им помогает Code Completion, по ним построчно бегает дебаггер, по ним производится рефакторинг. А ты будешь в текстовом редакторе все правитьи или наслаждаться подчеркиванием красным в Eclipse/NetBeans/IDEA/etc?

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

> А ты будешь в текстовом редакторе все правитьи или наслаждаться подчеркиванием красным в Eclipse/NetBeans/IDEA/etc

идея и нетбинс - понятия не имею, как там устроено.

В Эклипсе можно написать плагин, который уберет все подчеркивания. Рефакторинг можно производить по сгенерированному коду (фоновая кодогенерация). Навигацию по кастомным конструкциям языка можно организовать с помощью плагина с использованием DLTK (Dynamic Languages Tool Kit).

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

в рамках стандартного потяного синтаксиса


ну да, еще один язык. И как любой другой язык, его можно будет освоить за день. Темболее что подмножество уже знакомого java.

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

Все можеть быть и радужно на словах, но я бы хотел это увидеть в деле. Можеть быть не все так гладко и начнет все это работать так же как и Eclipse в целом, рассыпаться на ходу. Слишком сложная система получается. Возможно расширение классов при старте, но как я понял вы собираетесь расширять сам компилятор. Это кардинальное решение, требует много отладки.

Но вообще сам research насколько далеко можно успешно продвинуться и какая-то базовая имплементация - достаточно интерестно

vertexua ★★★★★
()
class Foo {
   private int foo;
   public void setFoo(int i) {
      foo = i;
   }
}

class Foo1 {
   @Property private int foo;
}

для обеих случаев напиши как ты будешь устанавливать значение

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

препроцессинг Foo1 дает то, что ты написал для Foo, в случае если setFoo еще не существует. Точнее, («@property (nonatomic, writeonly) private int foo», ибо у тебя только сеттер и просто int а не AtomicInteger).

Устанавливать в дальнейшем так:

Foo1 foo1 = new Foo1(); //что сделать с этим повторением тоже нужно подумать

int i = 3;

foo1.setFoo(3); //помним, что setFoo уже сгенерирован препроцессором

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

что сделать с этим повторением тоже нужно подумать

Как насчет перейти на С#? Просто кородить костыль поверх Java с возможностями C# неоправдано, так как есть Groovy, Groovy++, JRuby и Scala, каждый из которых заруливает C#. Если нужна скорость, то из них оставить только языки со статической типизацией.

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

Как насчет перейти на С#?

C# хорош. Но Microsoft должна умереть в мучениях, или открыть исходники .NET и отдать права на все .NET-ориентированные технологии в public domain.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от vertexua

есть еще проблема :) заказчик ожидает, что если он заказал писать код на Java, то он получит код на Java. А всякие Groovy и Scala - нестабильно, неынтерпрайзно, чортовы студенческие поделки. В случае препроцессора, можно вести разработку на чем Бог на душу положит, а отдавать заказчику код на Java.

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

Меня бы удовлетворило одно из двух.

1. GPL/Apache/MPL

2. Хоть и проприетарный, но качественный, производительный порт на разные системы.

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

Че за схемы, почему нельзя работать нормально? Или пояснить что Scala более ынтерпрайзна чем все их PHP. А отдавать код на Java, который пахнет суровой кодогенерацией - не айс. Попалят

vertexua ★★★★★
()

Но проще и правильнее, мне кажется, сделать шаг сборки для eclipse и плагин для подсветки своего синтаксиса.

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

Я вже же за то, чтобы оставаться в рамках Java. Аннотации и static import позволяют делать все что надо в плане DSL. Изменения в синтаксисе должы исходить из изменений в стандарте

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

> А отдавать код на Java, который пахнет суровой кодогенерацией - не айс. Попалят

нужно как-то разрулить, чтобы кодогенерация была не суровой ;)

а вообще, как сейчас получается? Каждый заказчик хочет, чтобы код принадлежал только ему, ни с кем не поделится. А задачи-то у всех однотипные, вот и генерируем одну и ту же лабуду раз за разом с незначительными вариациями. Иногда можно написать много тысяч строк кода и понять, что изобрел то же, что было вчера. Иногда «незначительные изменения» представляют собой просто шедевры тупизны, но их наличие необходимо, чтобы код отличался. Иногда клепаешь такой код на автомате, включая «незначительные изменения». Чувствуешь себя эдаким кодогенератором-шаблонизатором, а результат твоего труда зачастую похож на творения сбесившегося обфускатора. И ничо, хавают. И еще радуются, что это было сделано «персонально для них». Вот это сурово..

stevejobs ★★★★☆
() автор топика

>Чтобы, например, как в ObjectiveC можно было вместо написания уродского хлама геттеров-сеттеров писать «@synthesize (options) field»

project lombok

будет генерить их в момент сборки.


compile-time аннотации же

thevery ★★★★
()

исмользуем openJDK в клиент-серверном проекте, вроде бы разработчикам хватает.

splinter ★★★★★
()

Есть мнение, что для препроцессора не нужно хачить компилятор, можно и внешними тулзами обойтись, если результат транслируется в компилируемый код. Пример такого: Qt

praseodim ★★★★★
()

В Девеломпент.

svu ★★★★★
()

с openjdk дико глючит/тормозит eclipse при кодинге под андроид. из-за этого переключился на sun jdk/jre, все баги как рукой сняло.

p.s. как раз вчера прикрутил сишный препроцессор (cpp) к своему андроидному проекту, с интеграцией в эклипс. могу поделиться опытом, если интересует.

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

ну тогда очевидно, что появится проблема IDE, как уже сказали выше.

Deady
()
Ответ на: комментарий от stevejobs

а как тебе идея с макросами?

Макросы == ЗЛО, как и XML.

Хотелось бы каких-нибудь вкусненьких горяченьких макросов?

Засуньте себе препроцессор в одно место.

Выдвигай предложения!

Сделать нормальную Яву по типу JDK 1.4 без сраных дженериков, с мутабельным java.lang.String.

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

Тебя еще не задолбало генерить тонны кода командой «сгенери мне три страницы геттеров-сеттеров»?

Накой? Наследие JavaBeans не отпускает? Чтобы избавиться от геттеров и сеттеров нужно продумывать дизайн класса так, чтобы извне менять его состояние опосредованно, для выполнения им необходимых функций. Тогда получится не тупая state-machine с обвязкой из ненужных методов, а целостный узел с определённой функциональностью с методами доступа к нему через хорошо спроектированный интерфейс.

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

Сделать нормальную Яву по типу JDK 1.4 без сраных дженериков, с мутабельным java.lang.String.

Могу себе представить сколько кода развалится. Разве что класс отдельный и так и называться будет MutableString.

А дженерики нужны. Но не сраные, как сейчас, а нормальные. Хотя они обратно совместимые

vertexua ★★★★★
()

А потом джавафанатики говорят, что джава - открытая, но при этом все боятся этот openJDK использовать.

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

Кто все? Никто ничего не боится кроме stevejobs, проблемы с нестабильной Java 7. ЛОР знаешь на чем крутится?

vertexua ★★★★★
()

OpenJDK ещё пилить и пилить

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