Real Studio 2012 R1

Real Software released Real Studio 2012 Release 1 this week. Real Software had hoped to release the new IDE user interface for R1 but significant problems delayed it to the point where releasing R1 using the old user interface made sense (and kept us from storming the castle with pitchforks).

This release is pretty solid, in my opinion. However, my first word of warning is about plugins. If you don’t use plugins then there’s not much to worry about but, if you’re like us and use a full compliment of plugins you might have to update your plugins before using R1.

Plugin coding rules are now enforced in R1 and if the plugin is doing things wrong error dialogs will popup, or worse the IDE will crash, when starting up Real Studio. You will need to update your plugins if you get these errors or crashes. For example, if you use Einhugur or MonkeyBread Software plugins you will most likely get errors. Both vendors have updates available for most, if not all, of their plugins. The drawback is that you might need purchase new licenses and there might be some other third party plugins that have not updated their plugins at all.

Older versions of the Real Software database plugins simply will NOT work in this version of Real Studio. This is a significant departure from previous releases where you could get away with using an older plugin despite what RS shipped with the IDE. Now, you will have to use the latest DB plugins. The opposite is also true, it is unlikely that using the newer database plugins in an older version of Real Studio will work either. While the REALSQLDatabase plugin receives a lot of attention (since it’s the default database in Real Studio), if you are dependent upon other database plugins you may want to do some testing before doing a release with this version of Real Studio (always a good idea but I think an extra note of caution might be worthwhile).

I should note that the ODBC and PostgreSQL database plugins were updated AFTER the official release of 2012 R1 and if you use them you need to download them from the Real Software extras download page at http://www.realsoftware.com/download/#extras (scroll to the bottom of page).

What’s nice about Release 1 is that Cocoa is mostly complete with a few minor (but significant) issues. The amount of work that has gone into Cocoa is staggering. There are hundreds of Cocoa fixes and changes alone – way more than I can list here. Most things now work in Cocoa and while it’s still labeled as ‘Beta’ you should really start migrating your projects where possible. The Carbon framework simply isn’t going to get many bug fixes and certainly no new features. The future is Cocoa.

One issue that popped up late in beta testing for Cocoa applications that did not get fixed for the R1 release was tab order. I’m not exceptionally familiar with the problem but it seems that setting the tab order does nothing in Cocoa apps and they’ll default to a tab order of Left to Right and Top to Bottom. As you can imagine this might make your application UI a little wonky.

For Windows, perhaps the biggest change is that you can now use WebKit. Yay! This is good news for anyone that’s suffered through HTMLViewer not acting the same between Mac (WebKit) and Windows (Internet Explorer) applications. Not all is good news however since using WebKit for Windows will add about 40 MB to your build as all of the libraries for WebKit are added to your application. It is based on Chromium Embedded so it has a few limitations such as not being able to prevent the print dialog from showing, you can’t zoom just text, and it can’t track the document load progress.

Also new in Windows is a new OLEObject constructor that can take IDispatch objects. We simply don’t do much with OLEObjects in Real Studio. Anyone out there have any experience with this tell me what it means? Does this mean that Real Studio is one step closer to being COM compliant?

New to the REALSQLDatabase class is the ability to incrementally read/write blobs. This should make it easier to deal with very large objects (pictures, files, strings, etc) without freezing your application. To take advantage of it, you need to use the REALSQLBlob class. Sadly, I don’t see an example project in the Examples folder however the WIKI does show some basic usage. For major new functions like this it would be nice to see how it is intended to be used in an example project.

A number of items were fixed in Linux. Users can now print at resolutions greater than 72 DPI. Likewise a number of other bugs were fixed.

Web Edition applications are significantly faster – especially the WebListbox. This is partially optimization and partially much better string handling. This same string handling optimization is also seen in the JSON classes which also received a number of bug fixes.

WebApplication.HandleSpecialURL still now working for cgi apps. This is good news for developers that want to use a Web Edition application a web services platform. In the 2011 R4.x release this was completely broken for cgi applications.

There are many other bug fixes and optimizations – too numerous to list here. Despite what the release notes say, WebContainers still fire their open event twice.

The WebMoviePlayer has received a number of tweaks and bug fixes. However, playing mp4 videos in FireFox in Windows is crazy hard (impossible?) to get working (at least has been for me). Part of this seems to be the movie player framework and some of it appears to be recent changes to Flash for FireFox Windows. After working with it for a while I simply gave up and recoded my Real Studio training videos for Theora Ogg encoding. It’s not ideal but it works (whereas it seems it never worked in previous releases).

The WebSession class has a few new features that are useful. The first is the AllowUnsupportedBrowser event that will tell the user their browser is unsupported. You can override this functionality by returning true. There is a new TimedOut event that tells you when the user Session has been idle as set by the new Timeout property. For mobile devices that support it, there is now an OrientationChanged event.

As you can see there are a lot of changes in 2012 R1. This makes sense as it’s been close to 9 months since the last major release. It’s kind of a drag that the decision to use the old UI took so long (announced in May at Real World) but it was the right decision. Changing the UI and the frameworks (Cocoa especially) all at the same time always seemed crazy to me (but them I’m naturally risk averse). Let’s hope that this minor one step back let’s Real Software take a couple of huge steps forward with Release 2.

Release 1, so far, seems to be solid. I don’t know if there is a dot release in the works or not but the Cocoa tab order issue might be worthy of one all by itself. I’m sure there will be a few other things found as more developers start working with it.

What say you, Real Studio friends? 2012 Release 1 working well for you? Noticing any problems?

11 thoughts on “Real Studio 2012 R1

  1. Real Studio 2012r1 is important. It’s important for Real Software to actually deliver something this year. On the other side, it seems like a few things got rushed on the end. Like the updated database plugins just after the release or the plugin SDK which is not ready.
    Also there is a bind problem in RealSQLDatabase which could be a problem for any fans of bind. Case 22266 in Feedback.
    I’m curious for 2012r2 beta with the new IDE.
    Don’t get me wrong. I am happy about the release, but due to a handful bugs, we may use 2011 for some projects to avoid them and use 2012 in other projects to benefit from other fixes.

  2. Bob, you mentioned the Einhugur tools, do you have any comments on the StyleGrid 9.0.1 compatibility. It seems to work fine with my project, but it hasn’t been updated in a while, so it seems that maybe the changes in 2012r1 did not affect it?

  3. @Merv
    In my brief testing I’ve not had any problems with StyleGrid. From what I gather (since I’m not a plugin developer), it totally depended on how the plugin developer was implementing certain things. Perhaps Christian can enlighten us on what sorts of things changed.

  4. I should be fair and point out that my first sentence in the post is misleading. There were not ‘significant problems’. Simply put, there were more changes required to the framework and new User Interface than they could do in a timely enough manner for users (hence the pitchforks reference).

    So it’s not correct to say ‘problems’. It was just a bigger chunk of work than they expected and as they got into it they kept finding more things to work on.

    Sorry for the misrepresentation.

  5. The plugin issues currently with 2012r1 are coming from Real Software separating the plugin API from the normal runtime dispatcher. Which means the plugins can only call functions from a well defined list of allowed functions. Before the changes the plugin could call any runtime function. So there were a lot of common known functions which plugin developers used as there is no official function. Like for comparing a strings. Or the official functions (via introspection) are too slow, like for variant functions.
    With our plugins we had implemented changes with help from Real Software. We looked through list of functions and I replaced a dozen with other ways and also they put a dozen on the new function table, so they will go in the SDK sooner or later.
    For the users or plugin developers, it’s some work. But on the end, if the plugin developer doesn’t do this little changes for cleanup, will they do the 64 bit port?

  6. See REALS latest post on realsoftwareblog.com about the tab order being discarded BY DESIGN and soon this won’t be just on Mac, but Windows and Linux. I’m not a Mac programmer, but this seems INSANE! I googled and there are a lot of posts regarding tab issues on Mac OS X — users are unhappy with the OS tab issues; some say there is a fix in system preferences. Is this going to be true with Windows 8 too? I know the world is going to touch and hand gestures, but in data entry environments; the keyboard is still king. I can’t see living without tab order and having to come up with silly work arounds.

  7. @Jim
    Well, to be fair, their not REMOVING tabbing between controls, their just letting the OS handle the order. If tabbing is important to your application then you, the developer, *can* override the system default – it’s just more work than it is now.

    I think for a vast majority of developers this won’t be an issue. I can’t tell you how many times I’ve ‘fixed’ my tab orders to be exactly in the left to right top to bottom approach. So this might actually save me some time in the long run.

    It’s does seem counterintuitive but if there’s really a bunch of things you get for free that RS can’t get now then it might be worth it. I’m open to the idea (even though my first thoughts were similar to yours).

  8. Sorry, but calling disabling the taborder prop “not removing” is mindbuggling… It’s simply taking the decision away from the developer how a GUI should work. That is plain stupid and i was shocked to read about the plans to withdraw the abillities on Win and Linux too. So instead of either fixing it or at least giving an option how this is handled they simply want to kill the functionality on the other platforms as well. …even if the actual problem is not present on this platforms. Sorry, but to me this is either lazy or dumb. Our customers would not accept such a louzy excuse for taking away such a basic functionality. Why does Real think developers should accept this?

Comments are closed.