IDE

Q: I hear Elements uses Visual Studio. Do I also need to buy a copy of that to use Elements?

A: No. Elements comes with (i.e. includes) a copy of the Visual Studio 2015 IDE, also sometimes referred to as the Visual Studio "Shell". This copy of the IDE includes all the features and technologies you need to work with Elements on any of the three target platforms (.NET, Java and Cocoa).

Of course, if you do have a copy of Visual Studio 2013 or 2015 you already own (for example because you also want to use Visual Basic or Visual C#, or want some of the higher level features Microsoft provides in the bigger Visual Studio SKUs), Elements will integrate with that existing copy of Visual Studio, so you can use Elements and Microsoft's languages side by side in one IDE.

We provide two downloads for Elements, a bigger one that includes Visual Studio 2015 and will install a copy if it is not already present, and a smaller one that you can use if you already have Visual Studio installed (be it from a previous Elements version you are updating, or because you bought a dedicated copy of Visual Studio from Microsoft).

Q: Does Elements integrate into Visual C# Express or other Express editions of Visual Studio?

A: No. The "Express" editions are monolithic programs and Microsoft does not permit (technically or legally) integration of additional third party languages or tools into these editions. If you use an Express edition with Visual C#, Visual Basic .NET or Visual C++, you will need to let Elements install its own copy of Visual Studio (see previous question).

Elements does integrate with the new Community Edition of Visual Studio 2013 and later.

That said, Elements and its Visual Studio Shell will work fine and not be affected by Visual Studio Express editions installed side-by-side on the same computer.

Q: So Elements works in Visual Studio, even for Java, Android, Cocoa or Linux development?

A: Yes, that's correct. Support for all four target platforms in Elements is provided in Visual Studio, and you can expect the same kind of IDE and development experience (smart code editing, project management, and so on) on all targets. In fact, you can work on solutions that contain projects for all four targets at once, all under a single roof — for example if you are building versions of the same app for iOS, Android and Windows Phone.

Q: What about other IDEs?

A: With Elements 8.3 we introduced Fire, our own Mac-native development environment for Elements (for all four target platforms: .NET/Mono, Java/Android, Island and, of course, Cocoa), so if you are a Mac user, you can use Elements without a Windows VM or PC.

We are constantly looking at additional IDE options, but we currently have no plans to announce for integration with other third party IDEs (as we do with Visual Studio), such as Android Studio, Eclipse, or Visual Studio Code. We think that with Visual Studio and Water on Windows and Fire on the Mac, Elements is offering a pretty good IDE story.

Cross-Platform Development

Q: Can I use Elements to write a single application for all platforms?

A: No. We believe that tools that encourage you to do this are promising something that can only fail in real life. "Write once, run everywhere" is an elusive dream that has often been promised over the past few decades, and never been properly delivered.

Think of Elements not as a tool to create an app for all platforms, but one that lets you create apps for all platforms. Elements is a state-of-the-art development tool for each of the four platforms — .NET, Java, Cocoa and Island — on their own.

Of course Elements does allow you to share the same language(s) and expertise, and – with Sugar – a lot of the underlying back-end and business-logic code that makes up your apps. But ultimately, if you are serious about creating quality apps for multiple platforms, you will need to create individual apps designed for each platform - there is no way around it.

Anyone promising something different would probably also try to sell you the Brooklyn Bridge, if they could get away with it.

Q: What Visual Designers are available for Elements?

A: In line with the answer above, Elements uses each platform's own UI libraries for each target, and with that the platforms' own visual designers.

For .NET, visual designers are provided for Windows Forms (Oxygene only), XAML (as used in WPF, Silverlight, Windows Phone and WinRT/Metro) and ASP.NET Forms, all integrated into Visual Studio. These designers are provided by Microsoft as part of Visual Studio, and Elements integrates fully with them, in the same fashion that Visual C# or Visual Basic do. The Visual Designers for Windows are currently not supported from within Fire.

For Cocoa, Elements leverages the native XIB and Storyboard formats, and developers will use the visual designer provided by Apple and integrated into Xcode to design their UI and Storyboards. It is important to understand that the link between UI and code on the Apple platforms works differently than on our other supported platforms; rather than dropped controls automatically showing up in code (as they do in one form or another in all of .NET's and in Android's UI frameworks), in Cocoa user code explicitly declares properties and methods that are then connected to UI controls to access them or receive events. Rather than fight this, Elements embraces this concept, and integrates with the .xib and .storyboard formats so that applicable properties ("outlets") and methods ("actions") defined in the developer's code will automatically show up in Xcode's designer and can be connected there — an experience similar to that seen by Objective-C developers working right in Xcode.

For Android, Elements uses the platform's native XML Layout format for UI design and layout. Elements does not provide its own designers, but since the file format (and the way your code interacts with it) is standard, you can use any of the variety of third party designers that are available to simply open and edit the files. Both Fire and Visual Studio integrate deeply with the visual designer in Android Studio.

Q: Will Elements for Cocoa always use the "Interface Builder" designer in Xcode?

A: Yes, it will. Using the native designer is an advantage, not a disadvantage, and a deliberate design choice, not a compromise. It allows Elements to stay up to date with the platform and always give you full access to all the native controls. If we created our own designer, we (and you) would constantly be playing catch-up and rushing to add the latest new features that Apple ships with new versions of the OS.

The way Elements for Cocoa is designed, when Apple ships a new version of the OS and its tools, you will be ready to use all the great new stuff right away — this applies to the designer and all other aspects, such as new classes, controls or frameworks they introduce.

Database Access

Q: Does Elements come with support for database access, or is a license of Data Abstract required?

A: Elements gives the developer complete access to the full range of libraries available on the target platforms, including all the database technologies. For example, on .NET, the framework-provided ADO.NET infrastructure is the go-to technology for data access, with other database technologies built on top of it; on Java there is the JDBC API; on Cocoa and Android there are technologies such as the standard SQLite3 libraries.

Data Abstract is a separate and unrelated product also available from RemObjects, which provides sophisticated multi-tier data access. Data Abstract is not required for working with data in Elements apps, nor is Elements required to work with Data Abstract — it can be used with Visual C# and Visual Basic, Java, Objective-C, Swift, Delphi and other languages as well.

Of course Data Abstract does support Elements on all three platforms, and it does provide a lot of advanced functionality in the area of multi-tier database access, so if you are planning on building database-driven applications, it is worth a look.

Academic Licenses

Q: I'm a student, teacher, professor or academic researcher. Do you have academic pricing for me?

A: Yes, we have an academic license for Elements available at $199 (including all three platforms and all three languages). You can purchase your copy here.

Q: What proof do I need to awkwardly fax to you in order to qualify for an academic license?

A: None. We trust you; just go ahead and order a copy in our online store. But do make sure to read the next question and answer:

Q: What are the limitations of the academic license?

A: There are no technical limitations or restrictions on the academic license, you receive the exact same product as you do with the regular purchase. However, there are moral/legal restrictions: You are not allowed to use the academic license for commercial purposes, including selling your software, or building software for in-house use at a commercial company or government institution. This extends to developing software for a separate entity (e.g. for hire, or as a contractor or employee).

Once again, there are no technical restrictions in the product that would prevent you from doing any of the above, but if you are planning to, you might as well save yourself the $199 bucks and get a pirated copy to begin with.

You may use the academic license solely for academic purposes: learning programming, teaching programming, or building personal projects related to your academic endeavors.

Q: What is the renewal price for an Elements Academic License?

A: There currently is no separate renewal SKU available for Elements Academic licenses. To extend your Elements Academic subscription another year, you can simply purchase a fresh copy at $199.  

 

Elements Languages

Q: What's the relationship between Oxygene, RemObjects C# and Silver?

A: Oxygene, RemObjects C# and Silver are three different languages – Oxygene is a language of our own design, based on Object Pascal, RemObjects C# is, obviously, an implementation of the C# language, and Silver is our take on Apple's new Swift language.

All three languages are implemented on the same technology stack – they share the same back-end compiler, IDE integration, build tools for the different platforms, same debugging engine, and so on.

Oxygene is the oldest of the three, and has been around since late 2004. It has had a lot of time to evolve, grow and mature, and the ten years + of experience from Oxygene have helped make RemObjects C# and Silver stable and robust additional languages from day one.

This is also the reason why all three languages share the same version tag, even though RemObjects C# is a newer product, and Silver even more so.

RemObjects C#

Q: Why would one choose RemObjects C# for .NET development?

A: Good question! By the very nature of the product, we try to keep RemObjects C# as close to the Microsoft Visual C# implementation and the C# spec as possible (in contrast to our Oxygene language, where we innovate language capabilities aggressively). As such, there will be very few differences between using RemObjects C# or Visual C# for the .NET platforms.

RemObjects C#'s real strength comes in when you are also targeting the other platforms, because it allows you to more easily share your C# code with what you use on Java and Cocoa, due to its support for the Sugar cross-platform library and the Cross Platform Compatibility compiler mode.

Of course RemObjects C# has some enhancements that are usable and can improve the development experience, even when solely used for .NET development – from IDE features such as Inline Errors and Fix-Its to small language enhancements like multi-part method names.

Another benefit is that if you are a .NET developer who wants to work on the Mac, you can use RemObjects C# with Fire, our lightweight yet powerful Mac-native IDE.

Q: What is the difference between RemObjects C# and Xamarin?

A: Xamarin is a commercial toolchain that brings the .NET Framework to Android and iOS. RemObjects C# looks at this idea of reusing C# on a different level: It brings the C# Language to the Cocoa and Java/Dalvic platforms, instead.

What does that mean, exactly?

Xamarin always compiles your C# code to .NET (or Mono – same difference) IL code to run in the Mono runtime. It uses the .NET class libraries.

At first glance that might seem (and sometimes truly is) a benefit: it lets you work with the .NET classes you are already familiar with. But this approach also has a lot of downsides: Xamarin apps always require the large(ish) Mono runtime to be bundled and run with your applications. This makes your applications bigger and, oftentimes, slower. What's more, because you are building against the .NET class libraries, the real platform - be it Java/Android or Cocoa - is always kept at arm's length, and your access to platform features always goes through an intermediate layer.

The RemObjects C# compiler builds directly against the native platforms - such as the Java and Android class libraries provided by Google, or the Cocoa frameworks provided by Apple. This brings you "closer to the metal" and lets you create apps using the same APIs that all other Android or iOS developers use.

Why is that a benefit?

There are several benefits to working directly with the platform-native frameworks.

For one, it gives you direct access to all the APIs provided by the platform vendor, and in the way they were designed to be used. With RemObjects C#, you are not dependent on us creating wrappers that encapsulate framework capabilities for you. When iOS 8 or Android 5 come out, their new APIs are instantly usable from RemObjects C# – because RemObjects C# is made to work directly with them.

For another, because you are working with the native APIs, all the tutorials, articles and code snippets you find online will be immediately helpful to you. If you Google for help on an Android development problem, the results you find will mostly be in Java, of course. But language aside, all the classes and functions you work with are exactly the same, so all the ideas and suggestions you find online will apply directly to the C# code you write.The same goes for iOS or Mac development, where tutorials will mostly be in Objective-C, but once again the classes and APIs that are called are 100% identical to what you work with in C#.

Silver/Swift

Q: Why would anyone choose Silver for Cocoa development?

A: Just as with RemObjects C# on .NET, the main benefit for choosing Silver over Apple's Swift compiler for doing Cocoa development is the ease of sharing code with the other platforms. Using Silver across the board lets you use Sugar in your shared code. Another benefit is that you can work in the same IDE – Visual Studio or Fire – no matter what platform you are currently coding for.

Being able to work in Fire, our lightweight yet powerful Mac-native IDE, instead of Xcode can also be a huge benefit, as Xcode is becoming more resource hungry with each release, while Fire works greatly even on weak Mac hardware such as the 12" MacBook or older MacBook Air and Mac mini models.

Prism

Q: I am a Prism user. How do I get the latest Oxygene?

A: We have a separate page that outlines how we are handling migration of Embarcadero Prism customers (with and without Software Assurance) to our Oxygene. You can read more here.