Всем хорошо известны интерфейсы — то есть контракты, которым должны соответствовать классы, однако мало кто слышал про универсалии, которые являются последним словом в дизайне ПО. С точки зрения философии, откуда это понятие исходит, универсалия — это свойство, которое присуще двум или более сущностям определенной категории, например свойство "цветной" присуще всем объектам, у которых может быть цвет: если бы мы моделировали Pencil, то есть карандаш, мы бы сказали, что Pencil implements IColorful, посколько он имеет цвет. Но интерфейсы — понятие широкое, которое также используется для описания поведения. Я же предлагаю ввести специальную категорию интерфейсов, называемых универсалиями, у которых есть всего 1 свойство, содержащее конкретный объект, для задачи внедрения зависимостей и уменьшению бойлерплейта.
Пользователь
Модельно-Ориентированная Java, или Навстречу Дизайну ПО
Модельно-ориентированный метод (MDE) широко применяется во многих сферах современной инженерии; в программировании он позволяет разделить деятельность, направленную на создание универсального описания продукта, от деятельности по написанию кода, который бы эту модель воплощал в реальность. На практике, в мире Java эти деятельности по-сути совмещены воедино языком программирования, так как мы определяем интерфейсы на том же языке, на котором потом и пишем реализацию, поэтому грань между моделью и кодом может быть не так очевидна. Однако, она отчетливо проявляется, когда требуется интегрировать нашу программу в работу более сложных систем: например, я бы хотел запускать мою CLI утилиту как сервис, доступ к которому можно было бы получить через любой язык программирования по сокетам, сохранив при этом хороший Dev-X с автозаполнением полей и описанием опций. Сделаем это в 3 этапа под катом: во-первых, сконвертируем существующий Java-класс, который описывает флаги, в модельно-ориентированный XML, затем из него сгенерируем protobuf файлы для бинарного обмена данными и в завершение скомпилируем их для JavaScript и Java, обернув в приличный JSDoc. В конце обсудим все преимущества работы "на модель" и будущее роли дизайна при разработке ПО.
Компилирование «железного» бинарника Java-программы Google Closure Stylesheets с GraalVM
Google Closure Stylesheets -- это компилятор для CSS, написанный Гугл в рамках набора инструментов Closure для веб-разработки, который в свое время обладал внушительными функциями такими как экспансия браузерных префиксов, переменными и др. Прошло уже более 10 лет с начала этого проекта, и в прошлом году его архивировали. Я же продолжил вести свой форк, и сегодня собрал его как нативный binary с помощью Oracle GraalVM. Под катом рассказ о том, какие моменты пришлось проработать, а так же небольшие бенчмарки.
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность