Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Does Mac App Store accept application written in Python/Java/Ruby?

Does Mac App Store accept application written in Python/Java/Ruby?

like image 415
zhongshu Avatar asked Oct 22 '10 14:10

zhongshu


People also ask

Can you write Mac app in Java?

Yes, you can build iOS apps without Xcode using Codename One, an open-source cross-platform framework for building native apps with Java/Kotlin.

Can you put a Python app on the app store?

Yes you can write Python apps for Android and iOS. It runs on slow 2.3 devices, not just the latest 4. x super handsets.


2 Answers

The Good News

Yes, you can submit a Java app to the Mac App Store. Not true in the past, but it is true at least as of now in 2013.

One example is the successful MoneyDance personal finance app currently available for sale in the Mac App Store.

The Bad News

Preparing and submitting your app is neither simple nor easy. You have to jump through some hoops.

  • Your app cannot depend on Java being installed on the Mac. You must include a JRE (Java Runtime Environment) within your Mac app.
  • You must write a thin Objective-C wrapper around your Java app. The source code and examples/tutorials are available on the web.
  • Like any other app, you must go through all hassle of the complicated build and deployment rigmarole with security restrictions Apple requires of any Mac App Store app.

More Info

  • Two articles, Take your Java application to the Mac App Store and Forking the OpenJDK for fun and profit, by Marco Dinacci. These articles may provide other useful information, but fortunately their discussion of forking the JDK is now outmoded. He and others have provided the needed patches now incorporated in the official releases.
  • How to Create a Mac OS X Installer for a Java Application (Updated for Mac OS X 10.8 — Mountain Lion) by Dem Pilafian of Center Key Software.
  • Packaging a Java App for Distribution on a Mac (Oracle)
  • Submitting to the Mac App Store (Apple)

By the way, you can use both Swing and JavaFX in your app. JavaFX is now bundled with Java, at least as of Java 7 Update 40 according to these Release Notes.

Java 9

The newly released Java 9 should make this process of wrapping an app with a runtime even easier and better.

Modules

Java 9 brings “modularization”, Java Platform Module System (JPMS), where the approximately 5,000 classes bundled with a JVM are grouped into about a hundred chunks known as modules. You can include only the modules containing classes actually used by your particular app rather hauling along every library. If you don't use JSON or CORBA, then you need not include the JSON or CORBA related modules.

The new jlink tool does this work for you, to assemble and optimize a set of modules and their dependencies into a custom run-time image. As a bonus, some link-time optimization work is performed to make your app launch faster.

These features are supported on 64-bit macOS systems, along with other platforms.

Native compiling

Java 9 also brings new support for native compiling, to build an app optimized for specific hardware. But this ability is experimental, and not yet ready for production use.

Update, as of 2018

Oracle has announced the end of web deployment technology, including Java Web Start, the previously recommended avenue for desktop apps. So now, Oracle expects all Java apps to be delivered bundled with a JVM such as is done with the jlink tool mentioned above.

So, the process of wrapping an app with a Java runtime that was something of a rarity just for the Apple App Store is now mainstream. Oracle expects any Java-based desktop app to be installed this way.

like image 138
Basil Bourque Avatar answered Oct 27 '22 02:10

Basil Bourque


Yes and no. Apple doesn't care what language your App is written in, but it cannot depend on or install anything outside of the binary you submit to Apple. The relevant guidelines are below:

2.14
Apps must be packaged and submitted using Apple's packaging technologies included in Xcode - no third party installers allowed
2.15
Apps must be self-contained, single application installation bundles, and cannot install code or resources in shared locations
2.16
Apps that download or install additional code or resources to add functionality or change their primary purpose will be rejected

So, while this means you can't depend on Ruby or Python, you could use a framework like MacRuby to build your app in Ruby and embed the Ruby interpreter. Speaking for MacRuby, apps have been successfully submitted to the Mac App Store this way.

like image 29
Dominic Avatar answered Oct 27 '22 02:10

Dominic