Internships
Register
Copyright © 2000—2025 JetBrains s.r.o.

Современная Window-management библиотека для JVM

Description

Лет семь назад стало понятно, что веб для разработки приложений не взлетел, а удобных нативных фреймворков не было — так появился Electron, а на роль главного десктопого языка был назначен JavaScript. Разрабатывать десктоп-приложения на JVM было бы даже лучше и проще, но JVM тогда было нечего предложить в смысле фреймворков. _Нормальных_ фреймворков.

В JetBrains мы потихоньку решаем эту проблему. Для графики сейчас у нас есть Skija — порт Skia для JVM. Для UI делаем Compose for Desktop. А вот для управления окнами пока нет ничего.

Самый большой наш друг сейчас — AWT. Его плюсы — он работает везде, предоставляя базовый функционал, и мы даже как-то научились с ним жить (форкнув JDK, ни много ни мало). Минусы — очень уж он морально устарел, а многие архитектурные проблемы в нем решаются не очень изящно.

Задумка нашего проекта простая: посмотреть, насколько сложно создать новую, современную, легкую, простую в использовании и нативную для JVM библиотеку для создания и управления окнами под все платформы. Что-то вроде Электрона, только без монструозного Chrome внутри.

Примерный scope:

  • Windows, macOS, Linux (X11/Wayland);
  • Инициализация нативных контекстов для каждой платформы: DirectX, Metal, Vulkan/OpenGL;
  • Создание окон, event loop;
  • Пробрасывание API в Java через JNI.

На перспективу (если успеем):

  • Современные API: color management, HiDPI, pointer events, input methods;
  • Глубокая интеграция с особенностями каждой платформы.

Потенциальные заказчики:

  • Compose for Desktop,
  • JetBrains Toolbox,
  • Новая пока неанонсированная IDE от JetBrains,
  • Весь мир.

По любым вопросам пишите @nikitonsky и @zs3ky

Requirements

Мы ищем студентов, готовых замарать свои руки в C++, ObjC, Swift, Win32, Cocoa, X11, Wayland и немножечко в JNI и разобраться, как работают десктоп-приложения на самом глубоком уровне. Основные качества: желание разбираться, как оно на самом деле работает, и желание делать нормально.

Легко, наверное, не будет, но если получится это провернуть — такая библиотека нужна всем. Без преувеличений.

Admission

Разработчики: Лето 2021

Mentor

Nikita Prokopov, Pavel Sergeev

Mentor's location

Remote

Product/Team

New IDE Platform

Tags

C++
Java
Objective-C
Swift