Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Java, C, C++, or Python for cross-platform GUI and tools?
5 points by hello_moto 10 days ago | hide | past | web | favorite | 4 comments
Hello HNers,

Lately I've been thinking about my "software/digital situation" through observing my daily habits. I've been hoarding data (e-mails, pictures, docs, passwords, todos, notes, etc) that are stored in the cloud through mostly reliable free services.

As I get older, I noticed that I've become a little bit concerned with the situation where I may not be able to use this services due to the usual reasons folks shared in HN.

I've been considering one path to get out of this situation: use local-first app (desktop/console/web-app). The only thing I have to be careful is the data format: they should be standard data format such as: txt, pdf, [png,jpeg,etc for pics], open-file-format such as ODF. I know there are tons of FOSS desktop/console apps/host-yourself-web-app out there but there is a small caveat: I'd like to stick with them for as long as I can with minimum upgrade cycle :) so that if the software has been abandoned, I don't want to deal with the situation where the base OS upgraded and the software no longer works.

I wouldn't mind using dropbox/rsync/tarsnap in order to resolve the sync situation whether real-time sync or daily backups.

Given these parameters, there is a good possibility that I might have to write my own tools to solve certain personal workflow.

Would you recommend Java, C, C++, or Python for cross-platforms software/tooling and why? Java: I have strong background in Java, love the tools+ecosystem. Caveats: JRE, Oracle, new language feature churns (I can choose not to) C/C++: only touched them in college, tools aren't great, willing to learn, need guidance for best-practices/minimize effort. Lots of folks I admired stick with C/C++ to build their tools. I respect that. C/C++ based-software seemed to require minimum upgrade too (not too many dependency) Python: Used Python occasionally. Caveats: small concern with upgrade story (Python2-Python3->future, lib binding).


I have the same worry with you, so I buy a mobile disk to store some important data. And I am thinking about deploying the server locally for bitwarden.

As to the tool for cross-platform apps. I am a Javaer but I don't like swing or other components, so I choose electron to build my apps which works fine.

My concern with Electron is its long-term viability. Plus making desktop app in HTML/CSS is a bit painful compare to Swing/Java.

I would suggest Java just because you have a strong background in it, which allow you to move faster. I would throw in using C# with .NET Core and Avalonia [0] as another option, though that would require you learning C#.

[0] https://github.com/AvaloniaUI/Avalonia

Expertise for Java and C# ecosystem will be available 50 years from now just like Cobol and Fortran today

Applications are open for YC Summer 2020

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact