How to resolve the type system-relational algebra mismatch
Quote from Dave Voorhis on October 31, 2019, 1:34 pmQuote from dandl on October 31, 2019, 1:10 pmQuote from Dave Voorhis on October 31, 2019, 10:18 amI look forward to seeing it. But I'm really not interested in targeting the Web, at least initially. There are my users: link. Look for the "Power User Gap". The ones who use Access because it sits (sat) just above Excel and well below the enterprise toolset. Yes, sooner or later they want Web but get the essentials right first. Database; UI with menus, forms and tables; reports with totalling; a bit of coding to glue it together. Why is that so hard?
If current progress continues, soon it won't be. It's what my datasheet project is quite rapidly becoming. I have these major components built or working works-in-progress, and largely independently:
- The Web framework I mentioned above, which -- along with a big bag of Web UI stuff that will get moved into #2 below -- includes a light abstraction layer on top of JDBC, plus database schema versioning tools to simplify deploying application updates, plus a built-in database schema (currently for PostgreSQL, but targeting others is trivial) and tools for handling user authentication and privileges.
The database stuff I understand, but didn't you miss chunk of Web stuff? What serves pages?
The Web stuff is Eclipse.org's RAP/RWT -- which from the programmer's point of view, looks almost exactly like Eclipse.org's standard desktop UI widget kit called SWT -- plus a bunch of helpers and wrappers I wrote, plus a servlet container like Tomcat or JBoss. It's notionally a single-page application, so no pages per se.
I use embedded Tomcat, which means you write standard Java desktop-ish code and configure an XML file (not my idea -- it's part of the servlet standard) that basically says, "load class <x>", which is the launch point of the application.
Run it, and what you get is a Web server listening on a designated port. Point a Web browser at it and what you see is a Web application with desktop-like capability and aesthetics. Proxy to it through your Web server and you get a desktop-like application, written using desktop-application-like approaches, running on the Web.
Quote from dandl on October 31, 2019, 1:10 pm
- A cross-platform UI toolkit (consisting largely of a set of helper classes to abstract away differences between two Eclipse.org project UI widget kits, SWT for desktop and RAP/RWT for Web) that allows you to build applications for Windows, MacOS, Linux, and the Web with native look-and-feel on the desktop and a "desktop application" L&F for the Web -- all from one Java code base. It means the Web doesn't have to be treated specially; it's just one of the target platforms. Soon to be released on its own as an open source project called Spoing, which is a tongue-in-cheek riff on Spring (Java framework) and Swing (SWT stands for Swing Widget Toolkit.)
If it works, wonderful. What I'm seeing in the wild is JS frameworks (React, Vue, etc), which kind of pretend the desktop is a dinosaur, best forgotten. Where can I find something to read?
It works and I'm writing code for it now. It'll expand over time, of course, but what's there now is usable. I intend to make the Github project public in a few days. As for something to read, there'll be a README with links and explanations, comments in the code, a simple demo application, and maybe javadocs in the project to start with. More docs and demos later on.
Quote from dandl on October 31, 2019, 1:10 pmQuote from Dave Voorhis on October 31, 2019, 10:18 amI look forward to seeing it. But I'm really not interested in targeting the Web, at least initially. There are my users: link. Look for the "Power User Gap". The ones who use Access because it sits (sat) just above Excel and well below the enterprise toolset. Yes, sooner or later they want Web but get the essentials right first. Database; UI with menus, forms and tables; reports with totalling; a bit of coding to glue it together. Why is that so hard?
If current progress continues, soon it won't be. It's what my datasheet project is quite rapidly becoming. I have these major components built or working works-in-progress, and largely independently:
- The Web framework I mentioned above, which -- along with a big bag of Web UI stuff that will get moved into #2 below -- includes a light abstraction layer on top of JDBC, plus database schema versioning tools to simplify deploying application updates, plus a built-in database schema (currently for PostgreSQL, but targeting others is trivial) and tools for handling user authentication and privileges.
The database stuff I understand, but didn't you miss chunk of Web stuff? What serves pages?
The Web stuff is Eclipse.org's RAP/RWT -- which from the programmer's point of view, looks almost exactly like Eclipse.org's standard desktop UI widget kit called SWT -- plus a bunch of helpers and wrappers I wrote, plus a servlet container like Tomcat or JBoss. It's notionally a single-page application, so no pages per se.
I use embedded Tomcat, which means you write standard Java desktop-ish code and configure an XML file (not my idea -- it's part of the servlet standard) that basically says, "load class <x>", which is the launch point of the application.
Run it, and what you get is a Web server listening on a designated port. Point a Web browser at it and what you see is a Web application with desktop-like capability and aesthetics. Proxy to it through your Web server and you get a desktop-like application, written using desktop-application-like approaches, running on the Web.
Quote from dandl on October 31, 2019, 1:10 pm
- A cross-platform UI toolkit (consisting largely of a set of helper classes to abstract away differences between two Eclipse.org project UI widget kits, SWT for desktop and RAP/RWT for Web) that allows you to build applications for Windows, MacOS, Linux, and the Web with native look-and-feel on the desktop and a "desktop application" L&F for the Web -- all from one Java code base. It means the Web doesn't have to be treated specially; it's just one of the target platforms. Soon to be released on its own as an open source project called Spoing, which is a tongue-in-cheek riff on Spring (Java framework) and Swing (SWT stands for Swing Widget Toolkit.)
If it works, wonderful. What I'm seeing in the wild is JS frameworks (React, Vue, etc), which kind of pretend the desktop is a dinosaur, best forgotten. Where can I find something to read?
It works and I'm writing code for it now. It'll expand over time, of course, but what's there now is usable. I intend to make the Github project public in a few days. As for something to read, there'll be a README with links and explanations, comments in the code, a simple demo application, and maybe javadocs in the project to start with. More docs and demos later on.
Quote from Dave Voorhis on October 31, 2019, 3:54 pmQuote from Dave Voorhis on October 31, 2019, 10:18 am
- A cross-platform UI toolkit (consisting largely of a set of helper classes to abstract away differences between two Eclipse.org project UI widget kits, SWT for desktop and RAP/RWT for Web) that allows you to build applications for Windows, MacOS, Linux, and the Web with native look-and-feel on the desktop and a "desktop application" L&F for the Web -- all from one Java code base. It means the Web doesn't have to be treated specially; it's just one of the target platforms. Soon to be released on its own as an open source project called Spoing, which is a tongue-in-cheek riff on Spring (Java framework) and Swing (SWT stands for Swing Widget Toolkit.)
Oops, just realised I bungled the description. SWT doesn't standard for Swing Widget Toolkit, it stands for Standard Widget Toolkit. Not sure what I was thinking there, because Spoing is meant to be an alternative to Spring (the Web parts of it) and Swing (which doesn't do Web.)
I should have written, "... Spoing, which is a tongue-in-cheek riff on Spring (Java framework for Web) and Swing (Java UI framework for desktop.)
Quote from Dave Voorhis on October 31, 2019, 10:18 am
- A cross-platform UI toolkit (consisting largely of a set of helper classes to abstract away differences between two Eclipse.org project UI widget kits, SWT for desktop and RAP/RWT for Web) that allows you to build applications for Windows, MacOS, Linux, and the Web with native look-and-feel on the desktop and a "desktop application" L&F for the Web -- all from one Java code base. It means the Web doesn't have to be treated specially; it's just one of the target platforms. Soon to be released on its own as an open source project called Spoing, which is a tongue-in-cheek riff on Spring (Java framework) and Swing (SWT stands for Swing Widget Toolkit.)
Oops, just realised I bungled the description. SWT doesn't standard for Swing Widget Toolkit, it stands for Standard Widget Toolkit. Not sure what I was thinking there, because Spoing is meant to be an alternative to Spring (the Web parts of it) and Swing (which doesn't do Web.)
I should have written, "... Spoing, which is a tongue-in-cheek riff on Spring (Java framework for Web) and Swing (Java UI framework for desktop.)
Quote from dandl on October 31, 2019, 11:46 pmI wondered. From a quick read it seems Spring has two heads: the original IOC and a newer Web thingie (because the devs thought they could). I found references to what you said: keep the IOC, junk the other bit, replace it with something better. But I can't find find Spoing.
BTW DotNet Core has a self-contained data access layer that seems to check a few boxes. It's new, so I need to check that out.
I don't know of anything on the DotNet side doing what you describe with creating a desktop UI and Web SPA from the same source code, but I'm still looking.
I wondered. From a quick read it seems Spring has two heads: the original IOC and a newer Web thingie (because the devs thought they could). I found references to what you said: keep the IOC, junk the other bit, replace it with something better. But I can't find find Spoing.
BTW DotNet Core has a self-contained data access layer that seems to check a few boxes. It's new, so I need to check that out.
I don't know of anything on the DotNet side doing what you describe with creating a desktop UI and Web SPA from the same source code, but I'm still looking.
Quote from Dave Voorhis on November 1, 2019, 7:13 amQuote from dandl on October 31, 2019, 11:46 pmI wondered. From a quick read it seems Spring has two heads: the original IOC and a newer Web thingie (because the devs thought they could). I found references to what you said: keep the IOC, junk the other bit, replace it with something better. But I can't find find Spoing.
That's because I haven't flipped the Github repository switch from 'Private' to 'Public', per my note above that it's "soon to be released ..."
First, I need to add a bit more to the 'Demo' code; add more to the README; and do some more tweaks & testing on my 'Downloader' widget, which is an abstraction over the desktop's 'File Save As...' and Web's download.
Quote from dandl on October 31, 2019, 11:46 pmI wondered. From a quick read it seems Spring has two heads: the original IOC and a newer Web thingie (because the devs thought they could). I found references to what you said: keep the IOC, junk the other bit, replace it with something better. But I can't find find Spoing.
That's because I haven't flipped the Github repository switch from 'Private' to 'Public', per my note above that it's "soon to be released ..."
First, I need to add a bit more to the 'Demo' code; add more to the README; and do some more tweaks & testing on my 'Downloader' widget, which is an abstraction over the desktop's 'File Save As...' and Web's download.
Quote from dandl on November 1, 2019, 10:00 amWe wait with baited breath.
Meanwhile, I've been having a look at MS's Razor Pages and EF Core. It's actually pretty good.
EF Core does all the schema definition, migrations, table objects and POCOs, roughly on a level with what I remember from Rails. No, it isn't Active Record (fortunately), but more API based. Underlying it is LINQ-toSQL, which gives the portability, so it works with just about any RDBMS, including SQLite.
Razor as a template language also looks a lot like Rails. The scaffolded code is easy to read and modify. It's forms based (not SPA) and behaves a lot like a typical WinForm app. Simple menus are a standard feature.
I reckon a middle-level developer could put together simple business applications and deploy them to Azure or a Unix server on a very reasonable timescale. This is a competent product, solid competition, worthy of respect. I assume there is something like it in the Java world. The window is closing.
We wait with baited breath.
Meanwhile, I've been having a look at MS's Razor Pages and EF Core. It's actually pretty good.
EF Core does all the schema definition, migrations, table objects and POCOs, roughly on a level with what I remember from Rails. No, it isn't Active Record (fortunately), but more API based. Underlying it is LINQ-toSQL, which gives the portability, so it works with just about any RDBMS, including SQLite.
Razor as a template language also looks a lot like Rails. The scaffolded code is easy to read and modify. It's forms based (not SPA) and behaves a lot like a typical WinForm app. Simple menus are a standard feature.
I reckon a middle-level developer could put together simple business applications and deploy them to Azure or a Unix server on a very reasonable timescale. This is a competent product, solid competition, worthy of respect. I assume there is something like it in the Java world. The window is closing.
Quote from Dave Voorhis on November 1, 2019, 4:41 pmQuote from dandl on November 1, 2019, 10:00 amWe wait with baited breath.
Meanwhile, I've been having a look at MS's Razor Pages and EF Core. It's actually pretty good.
EF Core does all the schema definition, migrations, table objects and POCOs, roughly on a level with what I remember from Rails. No, it isn't Active Record (fortunately), but more API based. Underlying it is LINQ-toSQL, which gives the portability, so it works with just about any RDBMS, including SQLite.
Razor as a template language also looks a lot like Rails. The scaffolded code is easy to read and modify. It's forms based (not SPA) and behaves a lot like a typical WinForm app. Simple menus are a standard feature.
I reckon a middle-level developer could put together simple business applications and deploy them to Azure or a Unix server on a very reasonable timescale. This is a competent product, solid competition, worthy of respect. I assume there is something like it in the Java world. The window is closing.
The Java equivalent is maybe Spring Boot + Hibernate?
On the UI side there's JavaFX, Google’s GWT, and Vaadin. There are undoubtedly others.
JavaFX is the only alternative to RAP/RWT and SWT that also supports desktop applications, though it tends to make desktop applications that look rather Web-like, rather than using native L&F like SWT.
Quote from dandl on November 1, 2019, 10:00 amWe wait with baited breath.
Meanwhile, I've been having a look at MS's Razor Pages and EF Core. It's actually pretty good.
EF Core does all the schema definition, migrations, table objects and POCOs, roughly on a level with what I remember from Rails. No, it isn't Active Record (fortunately), but more API based. Underlying it is LINQ-toSQL, which gives the portability, so it works with just about any RDBMS, including SQLite.
Razor as a template language also looks a lot like Rails. The scaffolded code is easy to read and modify. It's forms based (not SPA) and behaves a lot like a typical WinForm app. Simple menus are a standard feature.
I reckon a middle-level developer could put together simple business applications and deploy them to Azure or a Unix server on a very reasonable timescale. This is a competent product, solid competition, worthy of respect. I assume there is something like it in the Java world. The window is closing.
The Java equivalent is maybe Spring Boot + Hibernate?
On the UI side there's JavaFX, Google’s GWT, and Vaadin. There are undoubtedly others.
JavaFX is the only alternative to RAP/RWT and SWT that also supports desktop applications, though it tends to make desktop applications that look rather Web-like, rather than using native L&F like SWT.
Quote from dandl on November 2, 2019, 12:59 amQuote from Dave Voorhis on November 1, 2019, 4:41 pmQuote from dandl on November 1, 2019, 10:00 amWe wait with baited breath.
Meanwhile, I've been having a look at MS's Razor Pages and EF Core. It's actually pretty good.
EF Core does all the schema definition, migrations, table objects and POCOs, roughly on a level with what I remember from Rails. No, it isn't Active Record (fortunately), but more API based. Underlying it is LINQ-toSQL, which gives the portability, so it works with just about any RDBMS, including SQLite.
Razor as a template language also looks a lot like Rails. The scaffolded code is easy to read and modify. It's forms based (not SPA) and behaves a lot like a typical WinForm app. Simple menus are a standard feature.
I reckon a middle-level developer could put together simple business applications and deploy them to Azure or a Unix server on a very reasonable timescale. This is a competent product, solid competition, worthy of respect. I assume there is something like it in the Java world. The window is closing.
The Java equivalent is maybe Spring Boot + Hibernate?
Could be, they serve the same purpose, although to my eye the both (esp Hibernate) look old, solid and dependable rather than agile and easy to get into.
On the UI side there's JavaFX, Google’s GWT, and Vaadin. There are undoubtedly others.
JavaFX is the only alternative to RAP/RWT and SWT that also supports desktop applications, though it tends to make desktop applications that look rather Web-like, rather than using native L&F like SWT.
No doubt there are many people trying to solve the same problem. My only purpose was to point out just how good some of the newest entries appear to be, which means the bar just keeps getting higher and the competition to even get noticed that much harder.
Quote from Dave Voorhis on November 1, 2019, 4:41 pmQuote from dandl on November 1, 2019, 10:00 amWe wait with baited breath.
Meanwhile, I've been having a look at MS's Razor Pages and EF Core. It's actually pretty good.
EF Core does all the schema definition, migrations, table objects and POCOs, roughly on a level with what I remember from Rails. No, it isn't Active Record (fortunately), but more API based. Underlying it is LINQ-toSQL, which gives the portability, so it works with just about any RDBMS, including SQLite.
Razor as a template language also looks a lot like Rails. The scaffolded code is easy to read and modify. It's forms based (not SPA) and behaves a lot like a typical WinForm app. Simple menus are a standard feature.
I reckon a middle-level developer could put together simple business applications and deploy them to Azure or a Unix server on a very reasonable timescale. This is a competent product, solid competition, worthy of respect. I assume there is something like it in the Java world. The window is closing.
The Java equivalent is maybe Spring Boot + Hibernate?
Could be, they serve the same purpose, although to my eye the both (esp Hibernate) look old, solid and dependable rather than agile and easy to get into.
On the UI side there's JavaFX, Google’s GWT, and Vaadin. There are undoubtedly others.
JavaFX is the only alternative to RAP/RWT and SWT that also supports desktop applications, though it tends to make desktop applications that look rather Web-like, rather than using native L&F like SWT.
No doubt there are many people trying to solve the same problem. My only purpose was to point out just how good some of the newest entries appear to be, which means the bar just keeps getting higher and the competition to even get noticed that much harder.
Quote from Dave Voorhis on November 5, 2019, 10:03 pmQuote from Dave Voorhis on November 1, 2019, 7:13 amQuote from dandl on October 31, 2019, 11:46 pm... But I can't find find Spoing.
That's because I haven't flipped the Github repository switch from 'Private' to 'Public', per my note above that it's "soon to be released ..."
First, I need to add a bit more to the 'Demo' code; add more to the README; and do some more tweaks & testing on my 'Downloader' widget, which is an abstraction over the desktop's 'File Save As...' and Web's download.
Spoing is now publicly available.
Spoing is a set of libraries and sample source code to simplify building and deploying lightweight, fast-loading, cross-platform (Windows, Linux and MacOS) desktop and Web applications from one pure Java source code base. No XML, CSS, HTML, or Javascript is required.
Spoing includes a simple and illustrative demo application that can be used as a starting point for creating your own cross-platform desktop and Web applications.
See https://github.com/DaveVoorhis/Spoing
NOTE: There's a bug in the desktop demo which causes icons not to show. I'll have that fixed shortly, but figured I'd release it in the meantime.
Quote from Dave Voorhis on November 1, 2019, 7:13 amQuote from dandl on October 31, 2019, 11:46 pm... But I can't find find Spoing.
That's because I haven't flipped the Github repository switch from 'Private' to 'Public', per my note above that it's "soon to be released ..."
First, I need to add a bit more to the 'Demo' code; add more to the README; and do some more tweaks & testing on my 'Downloader' widget, which is an abstraction over the desktop's 'File Save As...' and Web's download.
Spoing is now publicly available.
Spoing is a set of libraries and sample source code to simplify building and deploying lightweight, fast-loading, cross-platform (Windows, Linux and MacOS) desktop and Web applications from one pure Java source code base. No XML, CSS, HTML, or Javascript is required.
Spoing includes a simple and illustrative demo application that can be used as a starting point for creating your own cross-platform desktop and Web applications.
See https://github.com/DaveVoorhis/Spoing
NOTE: There's a bug in the desktop demo which causes icons not to show. I'll have that fixed shortly, but figured I'd release it in the meantime.