Giter Site home page Giter Site logo

imagej-electron-app's Introduction

ImageJ via Electron

Electron is a technology enabling desktop apps using the Node.js JavaScript runtime.

This repository is an attempt to package ImageJ as an Electron app, so that it can be combined with JavaScript user interface elements, with an eventual possible goal of recasting the core ImageJ UI in JavaScript.

Why Electron

  • User interface. The Node.js community has produced much UI awesomeness, and will continue to do so. ImageJ would benefit from UI components such as image viewers that target a broad array of use cases including both web and desktop.

  • Polyglot. ImageJ is grounded in the Java ecosystem, but strives for universal accessibility. There is a vast breadth of powerful software, and the ability to combine tools across ecosystems may mean the difference between a successful scientific workflow and a costly software development endeavor.

  • Packaging. ImageJ and its sister project Fiji currently use a custom native launcher and custom packaging system which pose numerous challenges relating to native integration. The Node.js / Electron ecosystem has solved native desktop application packaging in a more modern way, which is likely to continue to work for many years to come.

    • The current ImageJ launcher is ~4000 lines of C code with many platform-specific #defines. This code must be regularly maintained and updated to accommodate the constantly evolving requirements and restrictions of operating systems and Java versions.

Installation

npm install
npm run rebuild
npm run postinstall
npm start

Technical challenges and questions

A sloppy list of questions and technical issues follows. To be cleaned up and organized soon!

  • Integration - How to pass options to the JVM via node-java
  • Integration - How to mix in Python
  • Electron - How to process Electron CLI args
  • Electron - Bundle JVM and/or JAR libraries into the app
  • Electron - How to override native things e.g. icon, systray
  • Electron - Splash screen while app is loading
  • Electron - JS menu builder - add IJ menu items but also support JS plugins that register menu items
  • JS dev practices - Is there a good JS editor with autocomplete? (WebStorm, I guess)
  • JS dev practices - How to organize sources, code style, multiple files, clean methods, etc
  • Infrastructure - Travis CI builds, AppVeyor builds
  • ImageJ - Integrate a JS script editor plugin? Atom? Something else?
  • ImageJ - What about ImageJ plugins dirs? (set imagej.dir property?)
  • Viewers - VTK.js viewer
  • Viewers - ivvv viewer

imagej-electron-app's People

Contributors

ctrueden avatar dependabot[bot] avatar freeman-lab avatar jbms avatar perlman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.