The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск jsii 1.90, генератора кода C#, Go, Java и Python из TypeScript

07.10.2023 13:43

Компания Amazon опубликовала компилятор jsii 1.90, представляющий собой модификацию компилятора TypeScript, позволяющую извлечь из компилируемых модулей информацию об API и сгенерировать универсальное представление данного API для обращения к JavaScript-классам из приложений на различных языках программирования. Код проекта написан на TypeScript и распространяется под лицензией Apache 2.0.

Jsii даёт возможность создавать на языке TypeScript библиотеки классов, которые могут использоваться в проектах на языках C#, Go, Java и Python, благодаря трансляции в родные для этих языков модули, предоставляющие тот же самый API. Инструментарий используется в AWS Cloud Development Kit для поставки библиотек для разных языков программирования, формируемых из одной кодовой базы. В новой версии реализовано кэширование списка классов для каждой сборки и документировано как можно превратить обязательное свойство в необязательное.

Пример исходного кода на TypeScript с классом Greeter и последующие примеры его использования в языках C#, Go, Python и Java в качестве родного класса для этих языков:



   export class Greeter {
     public greet(name: string) {
       return `Hello, ${name}!`;
     }
   }

Представление, скомпилированное в C#

   var greeter = new Greeter();
   greeter.Greet("World"); // => Hello, World!

Представление, скомпилированное в Go

   greeter := NewGreeter()
   greeter.Greet("World") // => Hello, World!

Представление, скомпилированное в Java

   final Greeter greeter = new Greeter();
   greeter.greet("World"); // => Hello, World!

Представление, скомпилированное в JavaScript

   const greeter = new Greeter();
   greeter.greet("World"); // => Hello, World!

Представление, скомпилированное в Python

   greeter = Greeter()
   greeter.greet("World") # => Hello, World!







  1. Главная ссылка к новости (https://github.com/aws/jsii/re...)
  2. OpenNews: Доступна серверная JavaScript-платформа Bun 1.0, более быстрая, чем Deno и Node.js
  3. OpenNews: Фреймворк Turbo прекращает использование языка TypeScript
  4. OpenNews: Вышел Pythonium 0.4.7, компилятор из Python в JavaScript
  5. OpenNews: Проекты по созданию компиляторов из Java в JavaScript и исполняемые файлы
  6. OpenNews: Cheerp 3.0, компилятор C/C++ в JavaScript, переведён на лицензии Apache 2.0 и LLVM
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/59884-jsii
Ключевые слова: jsii, javascript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (53) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 14:00, 07/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Неужели жаваскрит смогут заменить на что-то нормальное!
     
     
  • 2.11, Аноним (11), 14:44, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Легко, как только это что-то "нормальное" полноценно заработает в самых популярных 10 браузерах без трансляций в вебассемблы и прочий блоатварь
     
     
  • 3.15, User (??), 15:46, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ты точку пропустил - в 1.0 браузере достаточно. 97281
     
     
  • 4.38, Аноним (38), 22:24, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Браузер какой-то несчётный. Его нельзя посчитать в целых числах :)
     
  • 3.37, Аноним (37), 22:18, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не трынди, вебассембля - кошер.
     
     
  • 4.43, Аноним (43), 00:45, 08/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен, наконец-то можно заобфусицировать весь код!
     

  • 1.3, Аноним (3), 14:10, 07/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    только в hello worldы умеет? Чем это лучше, чем Haxe?
     
     
  • 2.4, Аноним (3), 14:22, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет, не только hello worldы.

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

    На самлм же деле эта штука генерит обёртки. А оригинальный JavaScript код исполняется виртуальной машиной в отдельром процессе.

     
     
  • 3.9, Аноним (9), 14:35, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    https://aws.github.io/jsii/specification/1-introduction/

    компиляция: код на TypeScript -> спецификация API на JSON -> обёртки на языках

    Выполнение: обёртки -> IPC -> ядро -> оригинальный модуль на
    JS

     
     
  • 4.24, penetrator (?), 17:51, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    ацкая хрень? вот это жесть
     
  • 2.14, Аноним (14), 15:20, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тем что это Nih от Amazon?
     

  • 1.5, FF (?), 14:23, 07/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мне надо наоборот, из нормальных языков в альтернативно логические
     
     
  • 2.16, Аноним (16), 16:14, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Альтернативно одарённые постоянно придумывают как всё переписать на новый лад, чтобы потом никто не разобрался.
     
     
  • 3.28, Аноним (14), 20:05, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Зарплата сама по себе не поднимется.
     

  • 1.6, FF (?), 14:26, 07/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    А где кстати этот, ну, который шестерёнка в системе cо знаком Rеристрации в центре нее..
     
     
  • 2.10, Аноним (1), 14:43, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Присмотрись внимательно, все перечисленные языки с GC (это такая штука для автоматического управления памятью).
    В отличии от той самой шестеренки.

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

     
     
  • 3.12, Аноним (9), 14:47, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нет никакой трансляции. Просто не очень востребованы низкоуровневые языки в амазоновском serverless облаке.
     
  • 3.13, Аноним (14), 15:19, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Откуда ты этот бредовый винегрет берешь? Ты ни про сабж ничего не знаешь ни про GC. Иногда лучше жевать это твой случай.
     
     
  • 4.17, FF (?), 16:36, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А кроме коллектора больше нечего вытащить из коллектора?
     
  • 4.20, FF (?), 16:40, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Не тебе
     
  • 4.31, Аноним (1), 21:36, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    С юмором, как я вижу, у местных напряженка
    Ну и ладно

    Если кому инетересно, вои причина почему Раст не добавили
    https://github.com/aws/jsii/issues/1684

     
     
  • 5.44, Аноним (43), 00:51, 08/10/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Хвалебные оды язычку не помогли, когда произошло столкновение с жестокой реально... большой текст свёрнут, показать
     
     
  • 6.46, Аноним (1), 00:55, 08/10/2023 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Какой громкий пук!
    Наверное в списке есть С или С++? а не, тоже нету, та що ж такое.
    И даже стандарты ISO не помогли.
     
  • 3.18, FF (?), 16:38, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот видишь, оно уже сложнее перечисленных, наxой оно нужно?
     
  • 3.19, FF (?), 16:39, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В программировании высокий уровень это как раз абстракция как этот сабж.
     

  • 1.23, Аноним (23), 17:41, 07/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    А когда будет наш отечественный аналог?
     
     
  • 2.27, Аноним (14), 20:03, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Как только появится экономическое обоснование сразу же появится.
     
     
  • 3.56, Аноним (56), 20:11, 08/10/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А процессоры для гражданских (не военных,  не секретных технологий) на своей архитектуре у вас уже есть? Спецификация как-то открыта чтоб под них делать языки программирования?
     

  • 1.26, Golangdev (?), 18:47, 07/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > библиотеки классов, которые могут использоваться

    но ты, %USERNAME% ими в реальности пользоваться не сможешь.

     
  • 1.29, ЗоринОС топ (?), 20:40, 07/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Наконец-то что-то нормальное. Завтра напишу на нём софтину
     
  • 1.33, Аноньимъ (ok), 22:04, 07/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ничего не понимаю.
    Зачем кому-то тайпскрипт и вообще всю это жабаскриптятину во что-то транслировать?
     
     
  • 2.34, Аноним (34), 22:14, 07/10/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    То что ты ничего не понимаешь сомнений не вызывает, это давно нам ясно. Но то что ты не способен прочитать описание по ссылке - весьма феерично.
     
  • 2.42, Вы забыли заполнить поле Name (?), 00:04, 08/10/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Раньше компилили в js, теперь из ts. О времена, о нравы!
     
     
  • 3.50, Аноним (50), 16:03, 08/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну и теперь предлагают транслировать в TS, там это один из вариантов.
     
  • 2.54, Аноним (56), 20:00, 08/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    В TS есть типы, вот и вся суть. Оно все-равно вероятнее всего транслируется в JS и оттуда нодой выполняется внутри библиотеки или извне. Если бы это был реально полноценный транслятор в другие языки, то ажиотаж был бы другой — они бы выпустили свой движок JS (или TS), а он есть? Я о таком не слышал.
     
     
  • 3.55, Аноним (56), 20:04, 08/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да и если делать полноценный транслятор, то все-таки лучше на C++ с технологией swig. Тогда будет поддержка ну очень многих языков.
     
  • 3.58, Аноньимъ (ok), 01:38, 09/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Просто в TS, как мне кажется, ну ничего нет такого чего нет в других яп.
    Вся его ценность, как мне кажется, исключительно в том что это более лучший js который в js транслируется.
    То есть за пределами вебнятены, как мне кажется, оно нафиг ненужно.

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

    Но всеравно TS по отношению к JS это что-то вроде С++ и Си...
    Нужно от конструкций в духе а = "текст" + 55 отказаться на уровне рантайма...
    И классы меня не радуют в TS.

    В веб ассемблере кстати надеюсь не только float есть?

     
     
  • 4.65, Аноним (65), 21:48, 09/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    TS это разработка Майкрософт, а JS — язык по стандарту ECMA. Поэтому JS имеет множество движков, которые могут его исполнять. Технологии TS и Babel развивались одновременно. У них была задача обеспечить более сложные возможности JS чем были, сделать синтаксис ближе к С-подобному. Но тогда было множество разных движков, а сейчас рынок движется к монополии одного.
    Напомни, какая сейчас лицензия у QT? И почему?
     
  • 4.67, Аноним (67), 15:58, 10/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Нужно от конструкций в духе а = "текст" + 55 отказаться на уровне рантайма...

    Выбор у тебя есть - пиши на языке типа хаскеля и радуйся, в чем проблема?

     
     
  • 5.68, Аноньимъ (ok), 16:28, 10/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    >> Нужно от конструкций в духе а = "текст" + 55 отказаться на уровне рантайма...
    > Выбор у тебя есть - пиши на языке типа хаскеля и радуйся,
    > в чем проблема?

    В том что браузер не понимает ничего кроме жава скрипта?

     

  • 1.40, Аноним (38), 22:27, 07/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ещё добавить трансляцию в C++ и трансляцию из JS, тогда можно перетранслировать Electron.
     
     
  • 2.52, Аноним (50), 16:18, 08/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    А разве сам код из TS оно полностью транслирует в родной для других? Я думал только обертку делает над скриптами.
     
  • 2.53, Аноним (50), 16:24, 08/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    https://aws.github.io/jsii/overview/runtime-architecture/ нода инсайд
     

  • 1.45, Аноним (45), 00:52, 08/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А функция NewGreeter() в Go какова?
     
     
  • 2.48, Аноним (50), 15:54, 08/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ты генерируешь скрипт с классом NewGreeter в Go, который является оберткой над классом в TS. Сам код TS вероятнее всего выполняется на ноде.
     
     
  • 3.62, Аноним (62), 14:30, 09/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    ахах, гугл хочет поиметь всё)))
     
     
  • 4.64, Аноним (65), 21:32, 09/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, это выпустило Amazon вроде как. Как-раз наоборот, они где-то добавили возможность писать на TS (JS) не разрабатывая свой движок используя их технологию. Такие технологии уже существуют, например тут вспомнили Electron, я помню использовал другую похожую технологию. Сомневаюсь что им Google навязывал свой V8. Просто как-то так исторически сложилось.
     

  • 1.47, Аноним (47), 05:45, 08/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Ну понятно — инструмент для веб-разработчиков. С одной стороны удобно для генерации DTO при разработке от front к back. С другой стороны существуют уже более современные технологии и эта разработка вышла уже устаревшей.

    p.s. господа, а какой смысл писать хоть что-то гадостное формируя при этом умную мину? комплексы?

     
     
  • 2.49, Аноним (50), 16:00, 08/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Да, можно ещё плагины или просто скрипты какие писать на TS для ПО. Для игр это тоже вроде не в новинку. Не все знают Lua, но многие знают TS и JS. Для видео/аудио обработки порой необходима кастомизация. Для облачных сервисов порой необходим особый скрипт.
     
     
  • 3.59, Аноньимъ (ok), 01:48, 09/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ценность луа в том что она простая как пробка, маленькая, быстрая, и легко встраиваемая/расширяемая.

    Тащить монстра V8 или что-то в таком духе чтобы добавить скрипты к аппликухе?
    Да ещё ужасный с любой стороны вообще js?

    > Не все знают Lua, но многие знают TS и JS

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

     
     
  • 4.63, Аноним (65), 21:26, 09/10/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Тащить монстра V8 или что-то в таком духе чтобы добавить скрипты к аппликухе?

    Да ещё ужасный с любой стороны вообще js?

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

     

  • 1.51, Аноним (50), 16:10, 08/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Автор, добавь пожалуйста перевод предложения между примером и представлением: "This allows users of that target language to use Greeter like any other native type".
    В переводе означает что это позволяет пользователям таких языков как C#, Go, Python и Java использовать класс Greeter как любой другой родной класс для этого языка.
     
  • 1.57, Анонимчик (?), 21:52, 08/10/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Питоновский код худо-бедно работает, но стоит импортировать threading в вызывающем коде - всё умирает.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру