Oracle Java SE is a programming language and gives customers enterprise features that minimize the costs of deployment and maintenance of their Java-based IT environment.
N/A
Supabase
Score 8.0 out of 10
N/A
Supabase is an Open Source Firebase Alternative from the company of the same name in Singapore. Every Supabase project is a dedicated PostgreSQL database. Supabase also provides an open source Object store with unlimited scalability, for any file type. Supports open source authentication, with every Supabase project coming with a complete User Management system that works without any additional tools.
Oracle Java SE is well suited to long-running applications (e.g. servers). Java Swing (UI toolkit) is now rather outdated, lacking support for modern UI features. JavaFX, the potential replacement for Swing, has now been separated out of Java core. Ideally, there would be a path to migrate a large application incrementally from Swing to JavaFX, but due to different threading models and other aspects, it is difficult. At this point, it is probably better to use an embedded web browser (e.g. JxBrowser) to provide a modern UI in HTML/Javascript and keep just the business logic in Java.
Supabase can be used for strong custom backends for games and full-stack web applications. Self-hosting is not as great of an option just yet, and Supabase is still being developed actively so there are still legitimate problems that can be encountered, but this project seems to be going in a positive direction and has been useful for us.
Commercial Licensing in 2019. Oracle will charge commercial organizations using Java SE for upgrading to the latest bug fixes and updates. Organizations will now need to either limit their implementation of Java SE or may need to drop it altogether.
Slow Performance. Due to the all of the abstraction of the JVM, Java SE programs take much more resources to compile and run compared to Python.
Poor UI appearance on all of the major GUI libraries (Swing, SWT, etc.). Through Android Studio, it is easy to get a native look/feel for Java apps, but when it comes to desktops, the UI is far from acceptable (does not mimic the native OS's look/feel at all).
The language is fluent and has good support from a number of open source and commercial IDEs. Language features are added every 6 months, although long-term service releases are only available every 3 years. It would be nice if some of the older APIs were depreciated with more pressure to move to the new replacement APIs (e.g. File vs. Path), but transitions to new features are generally well implemented.
It still takes some ability to be able to use all the features, but you may not need to use all the features. Even though a lot of Supabase is straightforward, you will still want experienced backend developers working with this tech. I wouldn't recommend having frontend specialists deal with this much.
Java is such a mature product at this point that there is little support from the vendor that is needed. Various sources on the internet, and especially StackOverflow, provide a wealth of knowledge and advice. Areas that may benefit from support is when dealing with complex multithreading issues and security libraries.
Chose to go with Java instead of Python or C++ due to the expertise on the ground with the technology, for its ease of integration with our heterogeneous setup of production servers, and for the third party library support which we've found was able to address some challenging aspects of our business problem.
The extent of the options offered by Supabase far exceeded other similar products we've tried in the past. Also, their documentation has been excellent for us. Self-hosting is not what it's cracked up to be, but that's usually the case with these kinds of tools, anyway. I don't know anyone else I've talked to about Supabase who self-hosts, either. For something super micro small, Pocketbase is genuinely self-hostable, but it's been best for prototypes and proofs-of-concept, perhaps not with something expecting a lot of users. That's where Supabase's scalability and flexibility become more valuable.
The different versions make it harder to work with other companies where some use newer versions while some use older versions, costing time to make them compatible.
Licenses are getting to be costly, forcing us to consider OpenJDK as an alternative.
New features take time to learn. When someone starts using them, everyone has to take time to learn.