• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Database (ERP) development using JavaFX

 
Andrew Frolov
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello!

I'm interested in database (ERP) development using JavaFX. Are there any tools for rapid application development using Eclipse and JavaFX. I would appreciate to see any solid open source database application using JavaFX. A kind of retail/ store application at least.
 
John Damien Smith
Ranch Hand
Posts: 296
14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Add a lot more information on what you are trying to do (a couple of paragraphs at least).
Define what your expectations and minimum requirements are.
Perhaps also reference some tools you have evaluated and where they may meet or fail your requirements.
Also add detailed information on what you expect an answer to your question to contain.
 
Andrew Frolov
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
For the past 6 years I was a so called "1C developer": I used a Russian business application platform - 1C Enterprise, 1c-dn.com. Because of the political and economical problems in Ukraine I decided to master internationally recognized language and ecosystem - Oracle Java. In "1C Enterprise" developers use domain specific language and IDE which allow visual design of database objects in business terms (http://1c-dn.com/1c_enterprise/configuration_objects/), autogeneration of object forms so you don't need to code forms for simple-behavior cases. If you need to code a form - there is a visual design tool where you see object private fields and drag and drop the to the form (http://1c-dn.com/1c_enterprise/forms/).

I downloaded SceneBuilder to design JavaFX forms. At first it looked good but when it came to using TableView and TextField for my objects, not String or primitive types - I discovered that JavaFX form does not "know" what to do in such cases. I realized that I have to code with dozens of lines just to open choice form of my objects, return selected object to the input field. Comparing to my 1C experience it is a hell. (

Except SceneBuilder I use Hibernate ORM, for now it seems pretty good comparing to 1C Enterprise built-in ORM feature. After my experience with JavaFX forms for real enterprise challenges I came to doubt that this technology can be really used to develop complex applications with dozens of forms.

 
John Damien Smith
Ranch Hand
Posts: 296
14
  • Likes 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
That helps a lot, thanks for the background information. I had not heard of 1C before. It is an impressive tool.

You are right, JavaFX technology is not much like the 1C environment you are used to.
1C seems more a bit like some of the old Visual Basic/Microsoft Access/Power Builder style environments which were focused on Rapid Application Development.
For whatever reason, people don't seem to write those kinds of rapid development environments anymore, at least for desktop software.
If they did, (IMO) JavaFX probably would be a great choice for developing a new rapid development tool (e.g. for building something like the 1C visual development environment).
Instead, most commercial software like that seems to be tailored to web based UIs for cloud based systems, perhaps because those systems are easier to deploy within an enterprise and such systems come with in-built data sharing based on the cloud. Companies seem to like the idea that they can outsource not just the apps, but the entire infrastructure around them, greatly reducing their IT development and operations cost basis.
I think this could be due to the wide reach of the internet and the economies of scale which can be achieved by developing a web based system like WorkDay for HR, or Salesforce for CRM (or Google for Search).
Often, it is simply cheaper and easier for a company to use pre-built cloud based software from Salesforce rather than to build and maintain their own software from scratch using a RAD style desktop software development system like 1C.
Salesforce also has a development environment for customizing forms and developing applications based upon the Salesforce platform, so there is a developer ecosystem around that which is probably comparable to that which grew up around 1C.
Given your background and what you are trying to achieve, it might be an idea to transition to developing on something like the Salesforce platform: https://developer.salesforce.com. The Salesforce development platform is Java-like, though it is not exactly Java.

There are numerous components to an enterprise app:
1. Usually such systems have a significant server component. This is because large scale enterprise applications end up having at least a database and a appserver/webapp tier.
2. For the server component, if you are building totally custom software and not leveraging off an existing platform, Java tech (in the form of JEE or Spring) is often a good fit as it provides many capabilities and services. It is however a very complex stack of technologies, which can be bewildering, time consuming and people skill intensive, which is one of the reasons why a lot of startups go with alternate technologies like PHP and Rails for their development. There are however, still very many large scale applications which use Java enterprise technology as the back end to their systems (things like JAX-RS, JMS, Java App Servers, Apache Camel, etc).
3. Now, for the front-end, most companies develop web based applications using a technology such as JSF or one of the many frameworks available which output HTML.
4. Some newer trends in web applications are to build what are sometimes termed single page applications using a technology such as Angular where a lot of the logic is on the client in JavaScript.
5. If there is a mobile app portion for a phone or iPad, most people develop those front ends using either HTML web apps or native apps for those devices.

So that is how most people do things. Except for some platforms like Salesforce, I don't think that there is anybody that really bundles all that into an end-to-end rapid development environment like 1C. For simple CRUD the Rails/Grails type frameworks work from a code generation/framework scaffolding approach, rather than a visual design approach. Oracle might supply some web based form filling software in their fusion middleware (probably do). Things like PrimeFaces are probably the closest thing for the JSF world but they are more focused on providing a bunch of UI widgets than a total application development environment. For the newer Single Page Applications based on Angular, I think often that is bit like people picking a grab-bag of JavaScript tech to stitch something together and having that communicate with any kind of server tech which emits REST APIs - I don't think there is a visual designer for that kind of stuff.

JavaFX is not how most people do things. You could definitely build an enterprise grade forms system based upon JavaFX (in my opinion). If you were to do so, likely it would be something like this:
1. You have to solve the JavaFX client deployment issue - probably ship the application as a self-contained executable that clients will install on their desktop systems (and update to get updates).
2. You probably wouldn't target phones, as, though JavaFX can be made to run on phones, I don't know that such a solution would currently be robust enough to meet your needs (anyway form fill on a mobile phone seems a bit like an oxymoron).
3. JavaFX is only a UI tech, so that is all you would use it for.
4. You would design your forms in SceneBuilder so it has a declarative markup which is easier to maintain.
5. You would style everything in CSS (according to the JavaFX CSS reference, not the HTML CSS reference).
6. You would need to develop a small navigation framework to allow your forms to be strung together (as there is no in-built back/forward style navigation in JavaFX like there is on the web).
7. You would need to develop a client/server communication system (as there isn't something like HTTP form post or AJAX calls built-in) - perhaps you would use web sockets for this, though plain HTTP web calls would also work.
8. There are many client libraries which could assist you in the client/server communication (e.g. JAX-RS clients or WebSockets clients) - you would need to create a small framework to make it work concurrently within a JavaFX app.
9. If it is a form fill heavy client application, then you probably want some help doing basic stuff like validations and feedback for invalid forms - you can find such things in libraries like ControlsFX, though you might need to do additional work.
10. You would need some way to get data in and out of your JavaFX controls so that you can send and receive it over a network, so you can use a third party library like DataFX for that, though you will also need to write custom controls.
11. You would need to develop the backend server technology for the application tier, database tier and network APIs (e.g. Rest APIs or WebSocket server) - any of the traditional backend server tech (e.g. JEE/Spring/Rails/Python/etc.) could be used to write this.

Definitely do-able, but you will not find some ready made framework that does all this for you in the context of a drag and drop GUI development environment like you are used to with 1C. You will have to develop a bunch of infrastructure yourself, choose from and integrate a number of disparate libraries and tools and be a very competent developer with a range of skill sets to get the job done. I cannot point to a large-scale application which is built using the steps outlined above with a JavaFX based UI - that doesn't mean they don't exist, it just means I don't know of any.

 
Andrew Frolov
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
John, thank you a lot for your comprehensive answer! I received all answers for now. I will reconsider my learning and transition strategy.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic