Projector ile IDE’nize Uzaktan Erişin

Read this post in other languages:
English, Français, 한국어, Deutsch, Português do Brasil, Русский, Español, 简体中文

Bugün, JetBrains IDE’lerini ve Swing uygulamalarını ağınız üzerinden uzaktan çalıştırmanızı sağlayan araç ve çerçevemiz Projector’ın ilk sürümünü duyuruyoruz.

Projector Logosu

Bildiğiniz üzere, Swing, Java’ya yönelik bir grafik widget’tır. Mevcut JetBrains IDE’leri UI çizimi için Swing kullanır. Aynı durum, Android Studio gibi IntelliJ tabanlı diğer IDE’ler için de geçerlidir.

JetBrains IDE’leri ve Swing uygulamalarının masaüstü uygulamaları olması olumlu bir olgu olsa da zayıf istemciler gibi özel bir yaklaşım gerektiren olağan dışı birçok durum söz konusudur. İşte tam bu noktada Projector devreye girer.

Şirket içinde barındırılan bir teknoloji olan Projector, IntelliJ tabanlı IDE’ler ve Swing tabanlı uygulamaları sunucuda çalıştırarak bunlara tarayıcı ve yerel uygulamalar kullanarak dilediğiniz yerden erişmenizi sağlar.

Kullanım Senaryoları

IDE’leri sunucuda çalıştırmanızı gerektirebilecek çeşitli özel koşulları bulunur. Bu sorunlardan bazıları, özellikle kapsamlı altyapılara sahip büyük şirketlerde yaygındır. Projector’ın özellikle ideal bir biçimde ele aldığı sorunların özet listesine buradan ulaşabilirsiniz:

  • Çalıştırma zamanı yakınlarında kod veya veritabanı çalıştırarak tekrarlı işlemleri azaltma.
  • Yüksek güvenlikli kurumsal ortamlar.
  • Çok büyük projeler.
  • Kaynak kodun yerel kopyasının tutulması yasaktır.
  • Kullanıcı donanımı kısıtlamaları.
  • Zayıf istemciler.
  • Windows makinelerde veya ChromeOS gibi geleneksel olmayan işletim sistemlerinde GNU/Linux ortamında IDE çalıştırma ihtiyacı.
  • Uygulamanız sunucuda çalışmaya devam ederken bilgisayarınızı kapatma ihtiyacı.
  • Uzaktan hata ayıklama sunucu tarafı (devtest, devprod).
  • Hata ayıklama kaynakları ve önceden yapılandırılmış IDE’ye sahip Sanal Makine veya Docker görüntüleri.
  • Uzaktan erişim gerektiren bir yapılandırma.

Projector’ın ortak çalışmayla geliştirmeyi desteklemediğini unutmayın. Ortak çalışma aracına ihtiyacınız varsa Code With Me‘yi deneyin. Code With Me ve Projector’ın işlevlerini bir araya getiren yeni bir uzaktan geliştirme çözümü üzerinde de çalışıyoruz. Bu sayede, ağ gecikmesi sorunları daha da azaltılabilecek.

Açık Kaynak

Projector’ın her bileşeni, bir Açık Kaynak lisansı kapsamında yayınlanmaktadır. Bu özellik, bu teknolojiyi temel alarak özel çözümler geliştirmek isteyen şirketler için büyük önem taşır. En popüler üç lisansı kullanıyoruz:

  • İstemci: MIT Lisansı (Expat)
  • Sunucu: GNU GPL v2.0 + Classpath Exception
  • Dockerfile’lar: Apache Lisansı 2.0

Sizi, GitHub pull istekleriyle yeni özellikler ve hata düzeltmeleri sunarak katkıda bulunmaya davet ediyoruz. Belirli projelerin GitHub bağlantılarını aşağıda bulabilirsiniz.

Mimari

Projector, istemci-sunucu türünde bir yazılımdır. IDE’yi sunucunuzda çalıştırarak ağ üzerinden bağlanabilirsiniz. İstemci ile sunucu arasındaki bağlantı oldukça hızlı ve hafiftir.

Bu bağlantıyı VNC gibi bir uzak masaüstü çözümü gibi düşünebilirsiniz. Burada yalnızca IDE pencereleri görüntülenir ve Java tabanlı uygulamalarda maksimum aktarma hızı için ayarlanmıştır.

Projector, sunucu veya istemci kurulumu için birçok seçenek sunar.

İstemci Uygulamaları

IDE’ye bağlanmak için tarayıcı veya yerel uygulama kullanabilirsiniz. Yerel uygulama, daha iyi işlevler (örneğin klavye kısayolları sunar) sağlar ancak yalnızca masaüstü işletim sistemleri için sunulmaktadır. Şu anda, mobil cihazlar için tek seçenek tarayıcı kullanımıdır ancak gelecekte mobil platformlar için de yerel istemciler oluşturmayı planlıyoruz.

Web İstemcisi

Tarayıcı deneyimi, etkileşimli bir web sitesi kullanımına oldukça benzerdir. Ancak masaüstüne daha yakın bir deneyim sunan tam ekran moduna girme seçeneği bulunur.

URL parametrelerini değiştirerek web istemcisinin özelliklerini kontrol edebilirsiniz. Örneğin mobil cihazlarda, URL’ye "mobile" parametresini ekleyerek sanal klavye açma özelliği dahil olmak üzere katman düğmelerini etkinleştirebilirsiniz.

Web istemcisi, HTML5 Canvas API kullanılarak uygulanır ve bu API ile uyumlu tüm tarayıcılarda çalışması beklenir. Chrome/Chromium, Firefox ve Safari’de test edilmiştir.

Web istemcisini hiçbir yere yüklemeniz gerekmez: Projector’ın web sunucusu bölümüne zaten dahil edilmiştir. Tek yapmanız gereken URL’yi girmektir. Kodun tamamına GitHub‘dan ulaşabilirsiniz.

Yerel Uygulama

macOS, Windows ve Linux için bir yerel uygulama kullanabilirsiniz. İkili dosyalara buradan ulaşılabilir ve kaynaklar GitHub‘da yayınlanmıştır.

Dock/Görev Çubuğu entegrasyonu gibi beklenen avantajların yanı sıra bu uygulama, Ctrl+W/Cmd+W gibi klavye kısayollarını destekler. Bu kısayollar, tarayıcı istemcisinde genellikle bulunmaz.

Sunucu Tarafı

Python Yükleme Komut Dosyası

Yükleme komut dosyamız, sunucu tarafı bileşenlerinin yüklenmesinde esneklik sağlar. Bu, bağımsız bir dağıtımdır ve şu anda yalnızca GNU/Linux ana makineleri için mevcuttur. Sürümü, güvenlik seçenekleri ve diğer özellikleriyle birlikte yüklemek istediğiniz IDE’yi seçebilirsiniz.

Docker Görüntüleri

Docker, Projector’ı bulut ortamında çalıştırmanın en kolay yoludur. JetBrains IDE’lerini ve Projector’ı İçeren Docker görüntüleri oluşturmanızı sağlayacak örnek bir komut dosyası sunuyoruz. Bu komut dosyası, IDE’leri Docker’ın mevcut olduğu her yerde çalıştırmanızı sağlar. IDE, gözetimsiz ve yalıtılmış bir şekilde çalıştırılır. Ayrıca, sunucuya X11 yüklemeniz gerekmez. Görüntü kendi içinde yer alır.

DockerHub kullanmak yerine, özel Docker Kaydımızı kullanarak önceden oluşturulmuş görüntüler yayınladık. Örneğin, bu kod parçacığı IntelliJ IDEA Community Edition için pull işlemi gerçekleştirmenize olanak tanır:

docker pull registry.jetbrains.team/p/prj/containers/projector-idea-c

IDE Eklentisi

Son olarak, eklentiyi sunucu tarafı öğelerini ayrı bir sunucuya dağıtmak zorunda kalmadan doğrudan IDE’nize yükleyebilirsiniz. Bu eklenti sayesinde cihazınız sunucuya dönüşür. Her zaman olduğu gibi, kaynak kodunu GitHub‘da bulabilirsiniz.

Ancak eklenti çok daha az yalıtılmıştır. Bu durum, işletim sistemiyle etkileşimlerle karşılaşabileceğiniz anlamına gelir. Örneğin, macOS işletim sistemindeki genel menüyü oluşturamayız.

Kendiniz Geliştirin

Projector, bir son kullanıcı çözümü değil, bir teknolojidir. Bu teknolojiyi, kendi altyapınızı özelleştirerek işletmenizin ihtiyaçlarını karşılamak için kullanabilirsiniz. Ansible? Elbette. Kubernetes? Hiç sorun değil.

Yeterli düzeyde teknik uzmanlığa sahip olduğunuzu varsaydığımızda dilediğiniz her şeyi oluşturabilirsiniz. Kod açık kaynaktır. Bu nedenle, dilediğiniz her şeyi değiştirmenizin veya katkıda bulunmanızın önünde hiçbir engel yoktur. En önemli sunucu tarafı kodunun yanı sıra daha fazla bilgiyi GitHub‘da bulabilirsiniz.

Projector halen yeni bir teknoloji olmasına rağmen, uzak IDE erişimi için en iyi çözümlerden biri olma potansiyeline sahip olduğuna inanıyoruz. Geri bildirimlerinizi almaktan memnuniyet duyarız. YouTrack ve Twitter üzerinden dilediğiniz zaman bizimle iletişime geçebilirsiniz.

— Projector ekibi

Discover more