Developing a desktop Business Application using the JetBrains Platform Follow
I know the Idea Platform is principally designed to be used as a development tool - but I want to look into the viability of using it for a business application. As most developers I am under time pressure and really want to ask opinion first before embarking on weeks worth of work only to find out that it didn't have a chance to start off with. Here is my need:
1. The application must run as a desktop application. The application needs a whole lot of CRUD functionality, workflow views, status panels, talking to devices and services, specialised printing needs, has significant user specific state management, and needs a strong (quick and functionality rich) consistent user interface. In other words, like most other RCP frameworks it should support window management, file system management, logging, configuration/settings, services etc and especially important - modularity.
1.1. Point 1 also points out that I am really not interested in recommendations regarding web frameworks. We can talk for hours about their inconsistent behaviour over browsers and other caveats etc - but trust me - for the functionality intended, its deployment model and its use - a web app is not the right way to go.
2. The use of some form of workable MVC pattern is very important - and it must be able to cut across the modularity concern using services, injection or other. I really don't want to reinvent - I want to use something that is tried and tested and will stick to that professional recipe under the knowledge that it will work.
Obviously I don't want to start from scratch and is looking into IDEs as these supply RCP type functionality out of the box. As an added FYI, in my looking at NetBeans I have found that it really could work for what I am trying to do - BUT - I don't want to fight with NetBeans/Swing Hi DPI issues (and has invested a whole lot of time and money into JetBrains products while switching to NetBeans RCP implies using NetBeans!). I also love the JetBrains settings UI while I loathe the NetBeans one. I also looked at JRebirth, and even though I can agree with the pattern it is not an RCP, meaning I would have to still develop the whole framework (docks, windows, ui behaviour etc) - which would be sweet - but really not effective use of my time at this point.
Any comment/ideas will be sincerely appreciated.
Please sign in to leave a comment.
it's possible to extract the 'RCP' part of the IntelliJ platform but it isn't that simple. Also currently building our own product from IntelliJ sources requires writing sophisticated build scripts by hand (though we're working to simplify this). Given that I suppose that currently the IntelliJ platform is probably not the best choice for writing a general purpose RCP applications. If you don't need to have development specific features it's probably not worth the efforts.
Did you look at the Eclipse Platform? It's more widely used and has more documentation so probably it's better suited for your needs.
Hi @Nikolay - on your first paragraph comment - thank you. This is exactly what I needed to hear before (incorrectly) saddling up a horse that turns out to be a bull :-)
I had a quick look at the Eclipse Platform. And again - thanks for the comment. Eclipse also suffers the Hi DPI issue still (to a large degree)... I found it to have better view support for what I am trying to do (and a model that is probably slightly closer to what I want than netbeans) - but at the same time I am a bit uneasy saddling up SWT. Not only does imply different deployment - but I don't like the programming pattern in using the widgets (it feels very non-OOP to me) - I may be wrong since I only played with it for a very short time...
On the Eclipse HiDPI issue - it seems like it is getting better attention than Oracle is giving it to Java (Swing) and NetBeans for that matter. I don't want to wash my mouth out - but I have to say that I think the way that Oracle is handling this issue is disconcerting to say the least. I expected a patch of some kind by this time already (the current workarounds are enough to leave you blind).
Here is some feedback regarding the topic if anybody is interested.
I did have a good look at Eclipse, including buying a book from one of the better respected Eclipse RCP writers and having a good play with it. My findings are...
1. Going from IntelliJ to Eclipse for Java is like going from an IPhone to a Nokia 3310.
2. The Eclipse RCP is mostly really really well thought out with very good tool support - but it also has some small but painful show stoppers.
3. The SWT kit out-of-the-box functionality is seriously lacking. Choosing SWT means that you have to still develop a significant amount of very simple (even assumed) functionality that is supplied in most other desktop techs. The manipulation of SWT controls bring back memories of doing Visual C++ MFC coding back in the 90s... Functional but not the preferred way anymore.
4.The tool support, is very good, but not only slow in places (with lack of hi dpi support) - but also flakey if you think going with the latest and greatest versions. After having troubles I reverted back to a prior version of Eclipse (Mars-r2) to get everything to work seamlessly.
Btw, does it have to be cross-platform? (i.e Linux, Mac, Windows) Not that I have something to offer.
Does it have to be cross-platform? No, I tell my clients what hardware to buy and currently it is a Windows only solution (WPF, proprietary SQL, Wix etc). I would however like it to be cross platform and in all honesty - I enjoy the Java stack of technologies more than I do Windows. More specifically - Kotlin, Spring etc on IntelliJ obviously (which isn't suited for desktop ui)... It is a low cost app - so Mac is out of the question.
Furthermore, the app has to print, and the Windows tools excel at that while Java is primitive and time consuming - and acquiring the same tools (desktop UI and reporting) as for Windows is a whole lot more expensive and with less features and of worse quality. It is also a one developer company - so spending money on any tool, especially since everything is in USD which does not convert well for me, needs to be really really worth it.
So, I guess I will just have to stick to Windows (after looking at many many JVM options).
PS: The UI toolkits with reporting for Java is so limited and limiting that it seriously begs the question of whether it is worth it to invest time in this at all. JavaFX, I can really agree with it in concept, design and implementation... but it doesn't seem as if anybody is taking it seriously especially (but not limited to) the providing of tools.
PS Again: I used to be a very strong Delphi developer back in the day. Embarcadero has simply out priced their tools for me; this while Lazarus - well, in short - I have my issues with it.