You are browsing the archive for Jim McKeeth.

Managed is the New Native

May 15, 2012 in .NET, Java, Oxygene, Prism, Windows

It used to be that native development referred to compilers outputting code ready to execute on the target CPU. At the time, the pool of possible CPUs was small, and the alternatives where runtime interpretation. Since then a lot has changed. Modern CPUs have multiple modes of execution (protected mode, long mode, etc.) and optionals instruction sets (SSE4a, SSE5, etc.). A “native code” compiler must choose a minimum level to target, ignoring “higher” level functionality available on newer CPUs. This leaves programs unable to take advantage of the latest CPU innovations, and often running in a legacy compatibility mode on the very CPU it targets.

What is more native on the latest 64-bit processor: 32-bit x86 code or intermediate code just-in-time compiled to take advantage of the 64-bit architecture and latest SSE instruction set? Not so simple, is it?

Managed code platforms such as Java and .NET have a “native” advantage that no unmanaged (so called “native code”) compilers can match. Because managed platforms distribute their programs in an intermediate format (Intermediate Language [IL] Assemblies for .NET and Byte-code for Java) the Just-In-Time (JIT) compiler is able to compile the program to specifically target the CPU it is running on. This means the program can scale up or down as necessary on each CPU, even a CPU that wasn’t released when you wrote the code.

A misconception is that managed applications are slower than unmanaged applications, or that managed applications are interpreted at runtime. A managed application is JIT compiled into highly optimized machine code immediately on execution.

The alternative for non-managed compilers is to compile to multiple targets and then provide software emulation for CPU instruction sets on older CPUs. The result is a more bloated program that contains emulation code that is rarely used, or a program that is unable to take advantage of the latest CPU optimizations.

Now that managed is the new native, it leaves developers free to focus on what is really important: A Native User Experience.

The Importance of Compatibility

May 10, 2012 in Android, Cooper, Java, Oxygene

When you are choosing a tool or library for Android development it is really important to consider platform compatibility. Some tools only support the latest and greatest version of Android, while the majority of devices are still running Gingerbread. It is always useful to consult the monthly updated Platform Versions Distribution when considering which version of Android to target.

May 2012 Android Platform Version Distribution

While Ice Cream Sandwich (Android 4 / API 15) is all the rage, it is only installed on around 5% of the devices. Gingerbread (Android 2.3 / API 10) is the current front running with over 60% of the devices. It took over from Froyo (Android 2.2 / API 8) just last year. If you target Froyo or greater, you have the potential to reach a whooping 93.5% of the 300+ million Android devices. A whole lot better than the 5% that Ice Cream Sandwich gives you.

That is why RemObjects SDK for Java and Oxygene for Java support Froyo and newer – to give you access to the greatest possible number of Android devices. This level of support and compatibility is the result of our commitment to provide a native developer experience on each platform we support.

And thanks to the Support Package compatibility libraries your app can take advantage of a lot of the latest Ice Cream Sandwich features even when running on a Froyo or Gingerbread device. That way you can have your dessert and eat it too!

Windows 8? We got you covered!

April 17, 2012 in .NET, Delphi, JavaScript, Metro, Month of Metro, Oxygene, Visual Studio, Windows

I updated this slide from //Build/Windows 2011 to show where you can use RemObjects Software’s tools with the Windows 8 Platform and Tools.

Naturally, you can continue to use our tools for Delphi and .NET for desktop application development with Oxygene for .NET, Data Abstract and RemObjects SDK. If you are using Hydra, you can even combine Managed .NET and Unmanaged Delphi for the best of both worlds.  Then, with our latest JavaScript client libraries, we also have you covered in the browser.

The part that everyone is interested in is the new Metro style apps. These are the apps designed for touch on tablets and the desktop, and running in the Metro area of Windows 8. Most importantly, Metro style apps are the only ones available through the Windows Store. We got you covered for Metro, too. The latest betas of our .NET editions work with C#, VB and Oxygene for .NET to build XAML based Metro User Interfaces. Thanks to Windows 8′s new support for JavaScript based Metro apps, you can use our JavaScript client libraries for Data Abstract and RemObjects SDK to build Metro apps based on JavaScript and HTML/CSS too.

We are not in the unmanaged Metro space yet. Currently, the only tools that are supported there are Visual C and C++, which we don’t have libraries for. Hopefully in the future we will see that gap filled in one way or another.

One important thing to point out about the JavaScript client libraries is that they ship with all editions, including our Delphi editions. That means if you currently are building solutions with DA/Delphi or RO/Delphi, you can add JavaScript Metro client applications to your solution, all with the RemObjects licenses you have today. We will soon be offering DA/JavaScript as a free separate download too.

Currently, Metro support is only available in our beta builds (which are available to all users with current subscriptions). Rest assured that we will have final versions of our Metro support by the time Windows 8 ships.

Tools and Abstractions on iOS

April 16, 2012 in iOS, iPad, iPhone

I just came upon this Hanselminutes episode from back in February with John Sonmez about MonoTouch and Mono for Android, and it even mentions PhoneGap. If you are interested in working on iOS with any tool, I recommend you listen to the podcast, as he discusses the pros and cons of the different levels of abstraction and how to get the most out of the level you choose.

What do you think about his points on the different levels of abstraction? Remember, whatever level you choose we’ve got you covered with Data Abstract and RemObjects SDK for Xcode, .NET or JavaScript.

Use Oxygene in the 2nd PGD Challenge

March 22, 2012 in .NET, Java, Oxygene, Prism, short

The 2nd Pascal Game Development challenge was officially announced, and Oxygene for .NET (AKA Prism) and Oxygene for Java are both listed as “Key Tools” and “Allowed Languages“. If you are using Oxygene for Java, you might want to take a look at the JMonkey Engine video on RemObjects TV back from when we were still calling it “Cooper”.

As an added bonus, if your game is powered by Oxygene, we will provide you with a complementary Oxygene for Java license.

Month of Metro Media

March 16, 2012 in .NET, JavaScript, Metro, Month of Metro, Oxygene, Podcast, ROFX, rotv

I wanted to point out the podcast and video published as part of the Month of Metro.

First up is the video on building Windows 8 Metro Apps with Oxygene for .NET and VS11:

Then, there is the podcast with Daniel Arroyo of Flaretag, discussing mostly the open source, cross platform mobile application framework Titanium, as well as Metro and JavaScript in general.

There are more podcasts and videos in the works, so stay tuned.

 

 

Creating a Data Abstract client widget – Part 4

March 9, 2012 in iOS, iPad, JavaScript, ROFX

This is the 4th article in a 4 part series (the last for now)

  1. Using DashCode to create an interactive widget
  2. Creating an interactive widget without Dashcode
  3. Creating a RemObjects SDK client widget
  4. Creating a Data Abstract client widget (this article)

In this article we will look at Data Abstract client widgets created without using Dashcode.
Read the rest of this entry →

The desktop is not the OS. It’s an app

March 9, 2012 in .NET, JavaScript, Metro, Month of Metro, Windows

When everyone was in a panic about the announcement that JavaScript was pushed to be the preferred development tool for Windows 8 Metro apps, I said that as long as there is a desktop, traditional Win32 (or Win64) development will be a first class citizen, and that the Metro interface was the old concept of just the traditional “sidebar” apps (which have been developed in JavaScript for a while now), elevated to a new, more prominent status.

Well, it would appear I was wrong.

I was reading Paul Thurrott’s Windows 8 Consumer Preview: A Call For Common Sense and one point of his really stood out to me: “The desktop is not the OS. It’s an app.

He goes on to say . . .

The desktop is not the OS. In fact, while this isn’t technically true, conceptually, the desktop is just an app. The Windows 8 OS is comprised of Windows Runtime (WinRT), the Start screen shell and its Metro-style environment.

and . . .

For those many, many businesses that will rollout Windows 8 alongside Windows 7, the existing desktop environment looks and works almost exactly like its predecessor, and has no compatibility or long-term testing issues. That’s the goal for the Windows 8 desktop. All the exciting and new stuff is in Metro.

This really changes things. It means that the Desktop and traditional Windows programming has more in common with Windows XP mode on Windows 7 (running inside a virtual machine). I am not saying, nor have I heard anyone say, that the “Desktop” is running in a virtual machine, but the point is that the Desktop and traditional Windows programming is now officially “legacy”. In Windows 9 (or beyond), the Desktop may actually run in a virtual machine, or at least a sandbox.

Microsoft is replacing the familiar Windows API’s with WinRT, and this changes everything. Despite your opinions on JavaScript or .NET programming, they are now the preferred tools for developing on the Windows platform.

 

 

Creating a RemObjects SDK Client Widget for iBooks – Part 3

March 1, 2012 in Books, iOS, iPad, JavaScript, ROFX

This is the 3rd article in a 4 part series

  1. Using DashCode to create an interactive widget
  2. Creating an interactive widget without Dashcode
  3. Creating a RemObjects SDK client widget (this article)
  4. Creating a Data Abstract client widget

If you are new to creating widgets, take a look at the previous articles where I outline creating them with Dashcode and without. This article discusses using RemObjects SDK in both Dashcode widgets and in iBooks 2 on the iPad via iBooks Author.

When I first heard that iBooks Author supported interactive widgets powered by JavaScript, I immediately wondered if it would work with a widget that was a JavaScript client for a RemObjects SDK server. I started using Dashcode to create the widget, so that is where we will start in this article.

Read the rest of this entry →

Developing Database Applications for Mac and iOS (UPDATE: 6 chapters free)

February 24, 2012 in Books, iOS, iPad, iPhone, Mac, ROFX, Xcode

Developing Database Applications for Mac and iOS is a book about Data Abstract for Xcode that we started work on in 2011. Writing has been put on hold for a bit, but we are reviving the project and are planning to complete the book some time in 2012.

In the mean time, select portions of some chapters that we think are ready for consumption are being integrated here on the wiki for your benefit, while the remainder of the book is still being worked on.

The following topics are currently available:

Chapter 1

Chapter 2

Chapter 3

Chapter 4

Chapter 10

Chapter 12