I got back from 4D Summit 2018 in Washington DC and thought I’d post a few of
my thoughts and comments about this year’s summit.
I went to JPR’s advanced class and he made a statement at the end that I think
really sums of 4D v17. He said this is the biggest update in the history of 4D.
Bigger than 4D v3 and 4D Server v1 with multiple processes and windows. And v17
is only the beginning of the changes that are coming.
There are more features and changes that are far along in development that will
be released in v17 R releases and in v18 that will position 4D as the premier,
cross-platform RAD package combining an integrated client/server database that
has a ORDA interface. There is nothing out there can come close to it.
Particularly when you realize this is a cross-platform solution. Compiled,
native macOS and Windows versions of a piece of software from the same source
code. Integrated, powerful client/server database included. The same piece of
software can run as a single-user application or as a client/server
application. Tell me who else is doing that? And don’t forget “4D for iOS” as
the delicious cherry on top! We’ve got a software application development
system that is going to be very hard to beat.
What is ORDA? It is not a “a historical sociopolitical and military structure
of Mongol Eurasia”. This is a new term that 4D has created. It stands for
Object Relational Database Access. I’m guessing in a few years if you Google
ORDA that will be for number one link.
ORDA is coming to the 4D language. That is why we have the “dot notation”
option for the method editor. It is needed for ORDA. I think a quick way to
summarize ORDA is to say “if you know how Wakanda did database access with
JavaScript that is what ORDA is in the 4D programming language”. 4D is bringing
the advanced object oriented database access that Wakanda has to 4D. This is
going to change the way you will WANT to program in 4D.
I say “want” because if you are happy using the 4D language the way it is now
and has been for 25+ years you are free to continue to do that. JPR calls it
“classic 4D”. It will continue to work exactly as it has before. But if you
use the new ORDA method you will reap many benefits. Easier to read code, fewer
lines of code, complete control of exactly what relations are used between
tables to retrieve data and big speed improvements. That’s right, using ORDA to
accomplish a relational database lookup and data retrieve task can in many
situations be much faster than doing the same thing with a series of “classic”
4D language commands. So for all you “speed hounds”, you are going to want to
use ORDA. (Side note: when Laurent designed the 4D v11 database engine he had
in mind ORDA and planned for the optimizations. This thing has been in
development for many, many years.)
If you have used Wakanda or know how it accesses the 4D database in an object
oriented way, you already know how to use ORDA in 4D. That’s because it uses
basically same syntax as Wakanda. In my opinion this the beginning of bringing
all that is great about Wakanda and making it an integral part of 4D. Use it if
you want, or ignore it and continue to use the classic programing language. Or
use them both. You have a choice.
When I heard about the 4D Summit Advanced class and that JPR would also joined
by Laurent I knew something special was coming to 4D. (Laurent had to be there
because the subject matter was so new and broad that JPR would not have answers
to all questions. And that turned out to be true.) I thought they were going to
introduce a new language to 4D. JavaScript for 4D. My visions were that there
would be “Begin JavaScript” and “End JavaScript” commands like they “Begin SQL”
and “End SQL” commands that would let you write JavaScript and do fancy things
like you can do in Wakanda with JavaScript. I was wrong. There is no JavaScript
support in 4D, and there probably never be — outside of web areas.
Many, many changes to the 4D language are coming. I sat at a table with Laurent
and some other 4D developers at lunch one day and Laurent said the new 4D
language will be “JavaScript inspired”. He intends to add features to the 4D
language so that it will be even better than JavaScript! Inheritance, error
handling, custom data classes and the list goes on and on. The days of the 4D
language not getting updated are over. The changes are just getting started.
Reminds me of that movie where the character says “Badges? we don’t need no
stinking badges”. JavaScript? We don’t need no stinking JavaScript. We are
going to have something better. This is good news!
One example of a change in the 4D language is the “For each” loop control
structure. Super useful and needed when dealing with objects and containers.
More is coming. The doors to the 4D Engineer’s cages in France have been opened
and they are going to begin running wild attacking problems and limitations we
have had for many years with the language. Making things easier to do. And
making things that were not possible before, possible now. This is good news!
So you want an example of ORDA and changes to the 4D language? Here’s one form
JPR’s advanced class. (Hope I am not doing copywriter infringement here.)
You have a table called “Employee”. Just one table. It has a “managerID” field
and has a relation back to the “ID” field of the same table. (Yeah, that’s not
possible in the current version of 4D, but it is in v17.) The name of the
relation is “manager”. Find all Employees working for a manager whose
“firstname” is “Laurel”. Here is how you would do it now:
QUERY([Employee];[Employee]firstname="Laurel") // First Query
ARRAY LONGINT($arIDs;0)
SELECTION TO ARRAY([Employee]ID;$arIDs)
QUERY WITH ARRAY([Employee]managerID;$arIDs)
That gives you a selection of [Employee] records. Here is how you do it via
ORDA in v17:
$entSel:=ds.Employee.query("manager.firstname = ‘Laurel’ “)
That is it. One line of code. That gives you an entity collection which is very
much like a selection of records. And this is faster than QUERY, SELECTION TO
ARRAY and QUERY WITH ARRAY.
And it can be recursive. Say you want to find the managers of the managers
whose name is “Laurel”. You do it like this:
$entSel:=ds.Employee.query("manager.manager.firstname = ‘Laurel’ “)
4D Summit 2018 would not be complete without mentioning 4D for iOS. I called it
the “delicious cherry” and it is. This is a component that 4D is creating to
allow you to create an iOS application. The potential here is huge. They are
only at the beginning of the development of this product. They have not decided
on the pricing yet. Total feature set it still unknown. But we got a taste of
what is possible with this component.
The component is preinstalled in v17 and is integrated into the “File” menu so
you can select a menu item to create a new “iOS Project”. That opens a window
that lets you define the project. Select tables and fields you want to provide
access to in the iOS application. Select templates for how it will look in the
list views and detail views. Then click a “Build” button. That generates a
complete XCode project folder with all needed files, tells XCode to build the
project and then launches the built iOS application in the iOS Simulator
application on your Mac so you can test it. It connects to a 4D Server using
the 4D Mobile interface. Data is cached to the iPhone and saved to a “local
data store” so it is fast and does not required a constant connection to 4D
Server to use it. First version of 4D for iSO is read only, but later versions
will allow changing data on the iPhone and having it automatically sync back to
4D Server.
This is a real iOS application created by XCode. So you can build an app and
submit it to the Apple App Store if you want. Make a million bucks if you can.
Or you can submit to the Enterprise App Store and distribute it privately to
select people in the company you are developing it for. The wheels start
turning in your mind about what is possible now. I already have one client that
is begging for an iOS app to access their 4D Server application. I think this
will be the ticket to making that happen for a price they are willing to pay.
And they will pay me for this instead of another iOS application developer that
I would have to contract to build the iOS app. This is good news!
4D Summit 2018 was a big event. Many new technologies were presented. They gave
a hint of roadmap for the future and what was possible. Spending an hour at
lunch with Laurent was inspiring. Work that he and the 4D Engineering team have
doing for the last 5+ years are now coming to fruition. Things are ready to be
put into a production product and distributed to developers. He built it for us
to use. He wants it to be right and of high quality. It is something he is
proud of. You can tell that when you speak to him about it. He is excited about
what is going to be released. And he’s not done yet. He has more in the
pipeline. This is just what is ready now. More is coming. This is good news!
Tim
*****************************************
Tim Nevels
Innovative Solutions
785-749-3444
[email protected]
*****************************************
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ: http://lists.4d.com/faqnug.html
Archive: http://lists.4d.com/archives.html
Options: https://lists.4d.com/mailman/options/4d_tech
Unsub: mailto:[email protected]
**********************************************************************