Readit News logoReadit News
Posted by u/_38ua a year ago
Show HN: I Built a Java IDE for iPad
Includes OpenJDK 17 and IntelliSense. I don't know what led me to make this but here it is.
pquki4 · a year ago
The app store page doesn't mention debugging, so I assume it's not there.

And probably not "go to definition". Completion quality is also questionable. These are very hard problems, even for a language with strict typing like Java. It's not easy to get these basic lookups correct and smooth.

Personally I wouldn't call it an IDE (yet).

pandemic_region · a year ago
>It's not easy to get these basic lookups correct and smooth.

Exactly, Intellij has been in the autocompletion industry for what, almost 2 decades? And still they present me with types in the autocomplete drop-down that I have never ever used in any of my projects. Yes I know, but I got tired eventually from excluding them. In my brain autocomplete is not hard, yet for an IDE guessing seems really really hard. AI improved this, at the cost of a second latency. No thankee sir.

qwerty456127 · a year ago
Yet IntelliJ has always (figuratively, I dunno about its first years) been famous for having by far the best auto-completion ever. People used to become very upset when they were forced to use Eclipse after experience with IntelliJ.
gbear605 · a year ago
If you’re talking about the new autocompletion AI that they added a few months ago, you should be able to turn that off in the settings.
MrBuddyCasino · a year ago
> autocompletion industry

This is a great line.

wg0 · a year ago
Why auto complete for a static language would be hard? Everything is known in advance.

Genuine question.

aduffy · a year ago
I’m very curious, are you running the JDK inside the app? What difficulties did you run into trying to embed an external runtime?
coolius · a year ago
I got OpenJDK 17 to compile for iOS, but I had to disable JIT compilation as iOS doesn't allow running unsigned Code. Running the JVM itself is possible as long as the binaries are signed, and located at the correct paths. The paths issue really made me jump through hoops because Apple doesn't sign binaries unless they are bundled in Frameworks at the root of the bundle. That forced me to create symlinks to replicate the directory structure expected by the JVM while satisfying Apple's stupid policy.

Of course this whole thing only occured when I tried to submit to the App Store and the whole app was finished. I wasn't going to give up at that point.

indigoabstract · a year ago
I don't use Java much these days, but for some reason I find this project inspiring. If only because of the level of commitment to get it working.

I just wanted to say great job!

hnarn · a year ago
OpenJDK isn’t mentioned once in the apps description, and it is GPL which means this entire application may have to be GPL (IANAL)
jimbobthrowawy · a year ago
Where did you get a non-GPL version of OpenJDK?
karussell · a year ago
Impressive. Can you please work together with Oracle and make this available to everyone :) ?

And did you also try to use GraalVM?

cyberpunk · a year ago
Is there any technical reason why one couldn’t run e.g clang or go compilers in this way? I assume you’re running javac on-device?
robrtsql · a year ago
The app is monetized by limiting the number of “runs” you can do per month. Based on iOS limitations I think we can assume this means the compilation is done on a remote server.

EDIT: nevermind! I tried running a program with airplane mode on and it still worked. Now I’m really interested to hear how this was accomplished.

lewurm · a year ago
Probably a OpenJDK Zero VM build. That's a configuration without JIT or template interpreter, but a "plain" C++ switch dispatch interpreter that requires no runtime code generation.
lnxg33k1 · a year ago
Didn't Apple recently allow to run "emulators"? So code that generates code on the app store?
Rohansi · a year ago
I don't have a compatible device but I'm curious how the pricing works. Does it work like a subscription where you pay monthly for unlimited runs per month? Or do you just need to pay for enough runs and buy more if you run out?
sdwr · a year ago
In university, my friend used an iPad for all his notetaking. He had a keyboard for it, and used it like a little laptop. Bet he would have been all over this!

The UI is good, looks clean

mkl · a year ago
This is very common. A majority of my engineering maths students are writing lecture notes and exercises on a digital device, the plurality on iPad (Surface next most common). Many of these iPad users have a laptop as well as or instead of a keyboard for their tablet though, as the extra screen and flexibility are worth it.

Deleted Comment

wanderbuilds · a year ago
This is awesome! I definitely think it makes coding way more accessible to beginners and would allow me to work on cool side projects, without having to carry a laptop around. Can't wait to try it out.
criddell · a year ago
Can you use it to write iPadOS applications that you compile and run on the device?
davely · a year ago
This is my biggest hang up about the iPad. Hardware is great. The OS is… passable. Sort of.

For me: I can’t do computer things that I want to do (mainly code, but sometimes game, etc).

I ended up buying a used Surface Pro X. A bit slow, but I like that I can run something like VS Code and a Node server, or even a real web browser with network debugging tools, all using a touchscreen while on a bus or in an airplane.

(For my gaming fix, I find that GeForce Now or Moonlight work pretty well for streaming my existing games — not as practical to do on a bus though.)

criddell · a year ago
I understand what you are saying. The iPad is the best choice for some people and the worst choice for others. I have an older iPad Pro and it’s by far my favorite computer mostly because it doesn’t really feel like a computer.

My favorite apps are Procreate and GoodNotes. For me, either one is a killer app that justifies having an iPad.

I also have a ThinkPad for my personal projects and a desktop workstation for my job. Each machine has its strengths and weaknesses. Each was chosen because it was a great choice for what I need to do with it.

I’m one of the few people that hope the iPad doesn’t get more computer-like. I miss the days when you had an Atari or Amiga or PC or Mac and they were all very different and exciting and in competition with each other. Now we are approaching a very boring endgame where cross platform apps look the same everywhere and there’s nothing fun about any of it.

twobitshifter · a year ago
One solution is to tape a pi to your iPad case. :)

No internet connection required.

This should work for node but not compiled languages. I think that the compilation would happen on the slower Pi but maybe someone can figure out a way to compile but not run on the iPad.

https://magpi.raspberrypi.com/articles/connect-raspberry-pi-...

rock_artist · a year ago
While not perfect. For Swift, I’ve actually doing inițial app development using Swift Playgrounds.

I’m even maintaining project that still keeps working as Swift Playgrounds.

Here is an open source example of such: https://github.com/talaviram/OpenSpoken/tree/main/OpenSpoken...

But I also have internally a bigger app that is doing similar approach (not open source code though) - https://www.smartercurrency.app

I’ve yet tried and I guess it’s limited for trying to do any ObjC++ / C++ / Metal. But I do believe Apple is using playgrounds as a playground for Xcode successor.

The biggest issue though, is version control (git…) which requires more work to get things properly.

Kon-Peki · a year ago
> I guess it’s limited for trying to do any ObjC++ / C++ / Metal

The last time I tried, I couldn't get it to work, except...

One of the documented ways of creating compiled Metal kernels is to provide the source code as a string in your Swift code. And that works in Swift Playgrounds. It will compile and run your C++ Metal kernels, but it either works or doesn't. You get no compiler output.

alexpc201 · a year ago
That's the main drawback I find with the iPad. So much memory, so much processor, and not being able to use an app that allows me to create iOS apps. It's the reason why I only have an old iPad Air, it's enough for browsing, reading ebooks, and watching a movie on a trip. Anything bigger would be too bulky with the MacBook.
sharkjacobs · a year ago
> and not being able to use an app that allows me to create iOS apps

Maybe you already know about this and you just mean there isn't an app that provides the equivalent of your full MacOS dev environment, but you can absolutely build and run iOS apps on your iPad with Swift Playgrounds.

It has a lot of shortcomings, but I've used it to create a couple little personal apps that I can run without distributing them through the App Store.

jorgeleo · a year ago
So... Continuous for Java? Meaning it can compile and run in device?

https://apps.apple.com/us/app/continuous-net-c-and-f-ide/id1...

rcarmo · a year ago
So far, sort of. Continuous does have the advantage of having both C# and F# (although it’s a bit crashy these days on modern iOS). I can take the code I test there and build it on a desktop system as well, but haven’t figured out how easy it is to round-trip stuff in this yet (should be as easy, if not easier, but re-using libraries might be trickier).

Deleted Comment