From the blog

FNC Physics Components in TMS Analytics & Physics 3.3

TMS Analytics & Physics library is a set of classes that provide functionality for building powerful math and engineering applications with Delphi IDE. In the new version 3.3 of the library, we introduced special FNC physics components to take advantage of Delphi’s rapid application development. In this article, we’ll consider the base concepts of the FNC physics components and provide information on how to work with units of measurement.  Let’s consider the following FNC physics components: TFNCUnitProvider – creates a physics environment for the application; contains information about registered physics entities and provides units of measurement to other physics components. TFNCUnitConverter – provides properties and functionality to convert physical values measured in two different units. To begin an FNC physics application we first need to put a TFNCUnitProvider component on the form. The component has the following published properties: Quantities (TQuantityCollection) – a collection of registered physical quantities. Prefixes (TPrefixCollection) – a collection of registered prefixes that can be used to create units with multiplier factors (like kilo-, milli-, and so on). Units (TUnitCollection) – a collection of registered units of measurement that can be used to create complicated derived units. When you put a TFNCUnitProvider on the form in design-time, it automatically finds all registered quantities, prefixes, and units. The collections of these items are not editable, they only provide information about available physical entities. When an item is selected in a collection, its properties are shown in the Object Inspector. In the picture below, you can see a collection of physical quantities:   Any quantity has the following properties: Name (string) – the name of the quantity. Symbol (string) – a common symbol for the quantity designation. Dimension (string) – physical dimension of the quantity. As an example, we showed the ‘Area’ quantity. Its physical dimension is ‘L^2’ – squared length. More information about physical dimensions can be found in the documentation for the library. Analogously, you can view information about all registered unit prefixes, as shown in the picture below.   A prefix provides the following properties: Name (string) – the name of the prefix. Symbol (string) – symbol, identifying the prefix in composite units. Value (real) – the multiplier factor of the prefix. And finally, you can view all available units of measurements.   Any unit provides the following properties: Name (string) – the name of the unit. Symbol (string) – the symbol of the unit that is used to identify this unit for conversion algorithm and other manipulations. Dimension (string) – physical dimension of the unit. The unit provider component supplies the physical entities to other components, for example, to the TFNCUnitConverter. This component is intended to convert physical values measured in two different units and has the following properties: Provider (TFNCUnitProvider) – a unit provider. Unit1 (TUnitProperty) – the first unit of measurement for conversion. Unit2 (TUnitProperty) – the second unit of measurement for conversion. Value1 (real) – the first value, measured in the first unit of measurement. Value2 (real) – the second value, measured in the second unit of measurement. Valid (boolean) – read-only value defining if all input items are valid for conversion. Error (string) – read-only text of an error that occurred during conversion. IntervalConversion (boolean) – defines if making the interval conversion or not. First of all, you need to […]

Read More

Delphi Timewarp – 1995 And Delphi’s Mythical Origins

1995 is a very important year in the history of Delphi. On February 14 of that year the first version of Delphi was released for 16-bit Windows 3.1 as a Rapid Application Development (RAD) tool.  Delphi came as a departure from its predecessor, Borland’s Turbo Pascal for Windows. Turbo Pascal combined an editor, debugger, compiler, linker, and libraries, and evolved into Object Pascal after support for objects was added. Delphi / Object Pascal created a foundation for app development that still inspires and supports application developers today.         Henceforth Thou Shalt Be Known as “Delphi” Where did the Delphi name come from? The accepted story is that the Delphi name was originally suggested by then Borland developer Danny Thorpe as a reference to the Greek fortune-telling temple of the same name. One of the goals behind Delphi was to provide database connectivity to developers, and because Oracle was one of the more popular database products of the time, the reasoning was that “if you want to talk to the Oracle, you have to go to Delphi”.               It just happened, however, that Borland was preparing to release the product as Borland AppBuilder, but when Novell AppBuilder was released shortly before Borland’s own release date, the company moved forward with the amazing iconic name of Delphi. The rest, as they say, is history. The first version of Delphi came with a Visual Component Library (VCL), visual two-way tools, a Runtime Library (RTL), data-aware components live at design time, a Property Method Event (PME) model, structured exception handling, and Database support via BDE and SQL Links.             Where Was The World in 1995? What kind of year was 1995? Do you remember where you were in your life that year? I for one was halfway through architecture school. Here are some of the highlights: After landing in Saskatchewan, Canada, Steve Fosset became the first person to fly solo in a hot air balloon across the Pacific. The Schengen Agreement went into effect for the first time, and more than 170 countries agreed to extend the Nuclear Non-Proliferation Treaty. Meanwhile, a lot was happening in space, too. Russian cosmonaut Valeri Polyakov completed a record 366 days in space, while Bernard A. Harris Jr. became the first African American and Michael Foale became the first Briton to walk in space. In December, NASA’s unmanned probe Galileo captured the world’s imagination with pictures as it entered the atmosphere of Jupiter.               Entertainment Hollywood was busy as always, and the year saw the release of Kevin Costner’s Waterworld, David Fincher’s crime thriller Seven, with Brad Pitt and Morgan Freeman, and Toy Story, the first-ever full-length computer animated film.  Other high-profile movie releases included Batman Forever, and the James Bond thriller Goldeneye. Forrest Gump won the Oscar for best film. Alanis Morissette released Jagged Little Pill, Shaggy released Boombastic, and rapper Coolio released Gangsta’s Paradise. Browsers, Games and The Internet Microsoft released Windows 95, Visual Studio 4.0, and Internet Explorer 1 and 2. Interestingly, the first version of the Opera browser was also released in the same year, as was Netscape Navigator 2.0.               HTML was also at version 2.0, and […]

Read More

Developer Environment Tools For Delphi And Electron – Benchmark Study

Developer environment tools improve the speed and quality of coding with features like auto-completion, debugging, and emulation. They influence factors like development time, and the need (or lack thereof) to make future updates and bug fixes. RAD Studio, for example, comes with code insight, an advanced debugger, code formatting, refactoring assistance, and keystroke macros. When businesses choose a software framework they begin a long-term relationship for the duration of their application’s lifecycle. Given the strategic consequences of this decision, businesses must carefully consider how frameworks enhance developer productivity, business functionality,application flexibility, product performance, the long-term viability of that framework, and the inherent security in each framework’s design and technology. The ideal framework demonstrates strength in each category by minimizing product time-to-market, reducing maintenance costs, supporting product variety, and facilitating a superior customer experience. The “Discovering The Best Cross-Platform Framework Through Benchmarking” whitepaper evaluates two frameworks supporting multi-platform desktop application development: Delphi and Electron. This is the third in a series of blog posts looking more closely at each of the 26 individual metrics used in the study, and how Delphi and Electron each fared on these metrics. The first can be found here. Download the complete whitepaper here Benchmark Category: Developer Productivity Developer productivity is the measure of effort and code required for developers to complete typical development tasks. Productivity directly impacts product time-to-market and long-term labor costs so tools that increase developer productivity have substantial impacts on business timelines and bottom lines. Productivity can be realized in two distinct ways – reduced coding requirements due to native libraries, and IDE tools like code-completion and visual design.IDEs with greater library breadth generally result in fewer lines of code per application and produce a clean, lean codebase that minimizes opportunities for bugs or maintenance problems later in the product life cycle. Benchmark Metric 3/26: Developer Environment Tools Developer Environment Tools: Does the framework IDE standard installation include auto-completion, debugging, and emulation tools? Are multiple IDEs available for the framework? Frameworks with multiple development tools and a choice of IDE better support individual development preferences, techniques, and requirements. Benchmarking Results Delphi Score: 4 (out of 5) Delphi’s IDE, RAD Studio, offers a plethora of developer tools including Code Insight (suggestions, completion, etc.), advanced debugger, code formatting, refactoring assistance, keystroke macros, and integration with common software version control systems. RAD Studio provides an Android emulator feature and can tie into an iOS simulator on a macOS machine. RAD Studio is the only IDE available for Delphi and the only method of compiling Delphi projects, however, both the code and UI definitions can be edited using standard text editors. Electron Score: 4 (out of 5) Electron applications can be written in code editors such as Visual Studio, Atom, and WebStorm as well as full IDEs. All offer robust features and tools to enhance developer productivity. Electron must be compiled, run, and packaged using the command line – integration with Visual Studio Code hasn’t been completed. Third party solutions may be available. Download the complete whitepaper here

Read More

PDF generation with complex graphics in Delphi

Intro TMS FNC Core is the core foundation of FNC. It offers a solid structure for the other FNC component sets such as TMS FNC UI Pack and TMS FNC Maps. In the past, we have demonstrated the capabilities of TMS FNC Core in various ways. Below are a couple of links to blog posts about functionality available in TMS FNC Core. A browser, JSON persistence, printing, SVG support and many more. Today I want to focus on another “hidden gem”: PDF generation and in particular focusing on drawing complex graphics. Basic drawing  Before going to complex drawing statements, we need to take a look at the basics. Generating a PDF starts by specifying a file name, adding the first page, and then the PDF context is ready to be accessed via the Graphics property. In the sample below, we draw a simple rectangle by setting the properties of the fill & stroke and by calling p.Graphics.DrawRectangle. uses   FMX.TMSFNCPDFLib, FMX.TMSFNCGraphicsTypes; procedure TPDFGenerationForm.GeneratePDF; var   p: TTMSFNCPDFLib; begin   p := TTMSFNCPDFLib.Create;   try     p.BeginDocument(‘MyPDF.pdf’);     p.NewPage;     p.Graphics.Fill.Color := gcYellowgreen;     p.Graphics.Stroke.Color := gcGreen;     p.Graphics.Stroke.Width := 4;     p.Graphics.DrawRectangle(RectF(100, 100, 300, 300));     p.EndDocument(True);   finally     p.Free;   end; end; This generates the following PDF The basic ITMSFNCCustomPDFGraphicsLib interface (p.Graphics property) exposes a lot of basic drawing calls to draw shapes constructed out of simple primitives or more complex paths. On top of that, it’s possible to export images as well. Using these calls gives you the flexibility to enhance your PDF with vector sharp graphics. The way this needs to be done is by calling each draw statement in a specific order. See this sample below to draw a bezier curve. uses   FMX.TMSFNCPDFLib, FMX.TMSFNCGraphicsTypes, FMX.TMSFNCPDFCoreLibBase; procedure TPDFGenerationForm.GeneratePDF; var   p: TTMSFNCPDFLib; begin   p := TTMSFNCPDFLib.Create;   try     p.BeginDocument(‘MyPDF.pdf’);     p.NewPage; p.Graphics.Stroke.Color := gcDarkseagreen; p.Graphics.Stroke.Width := 3; p.Graphics.Stroke.Kind := gskSolid; p.Graphics.DrawPathBegin; p.Graphics.DrawPathMoveToPoint(PointF(350, 40)); p.Graphics.DrawPathAddCurveToPoint(PointF(310, 130), PointF(445, 50), PointF(398, 115)); p.Graphics.DrawPathEnd(dmPathStroke); p.Graphics.Stroke.Width := 0.5; p.Graphics.Stroke.Color := gcBlack; p.Graphics.Fill.Color := gcNull; p.Graphics.Fill.Kind := gfkSolid; p.Graphics.DrawLine(PointF(350, 40), PointF(310, 130)); p.Graphics.DrawLine(PointF(445, 50), PointF(398, 115)); p.Graphics.DrawRectangle(RectF(442.5, 47.5, 447.5, 52.5)); p.Graphics.DrawRectangle(RectF(395.5, 50 + 62.5, 400.5, 50 + 67.5)); p.Graphics.DrawRectangle(RectF(347.5, 50 – 12.5, 352.5, 50 – 7.5)); p.Graphics.DrawRectangle(RectF(307.5, 127.5, 312.5, 132.5));     p.EndDocument(True);   finally     p.Free;   end; end; The result of the above code is a bezier curve with lines and handles mimicking interaction. Mapping FNC Core graphics onto PDF graphics After the initial release, we had some requests on exporting FNC components to PDF. The PDF graphics layer was too limited to export components to PDF, therefore we have created the TTMSFNCGraphicsPDFEngine class, which decends from TTMSFNCGraphics, the core class for all FNC cross-platform drawing. On top of the default PDF graphics, the TTMSFNCGraphicsPDFEngine gives you complex paths, matrix transforms as well as various flexible image drawing options. Together with SVG support we can then load the SVG as a resource and draw the information as vector graphics inside the PDF. Internally, the SVG is parsed, elements are transformed to FNC graphics paths and with that information the PDF graphics engine draws renders the SVG onto the PDF canvas, via the earlier mentioned drawing calls. All in a couple of lines. uses   FMX.TMSFNCPDFLib, FMX.TMSFNCGraphicsTypes,   FMX.TMSFNCGraphicsPDFEngine, FMX.TMSFNCTypes; procedure TPDFGenerationForm.GeneratePDF; var   p: TTMSFNCPDFLib;   g: TTMSFNCGraphicsPDFEngine;   bmp: TTMSFNCBitmap; begin […]

Read More

GraphQL for Delphi, our new full GraphQL-spec compliant library launch webinar

Next tuesday, Feb 8 at 5h00 UTC 18h00 CET, we have a new webinar you will not want to miss! Our experts & Embarcadero MVPs Wagner Landgraf and Roman Yankovsky will introduce a brand new product GraphQL for Delphi to you. This webinar gives you the opportunity to learn what GraphQL is, what you can use it for and then show how to use it from Delphi using the full GraphQL-spec complaint library “GraphQL for Delphi” including some live examples. You will learn how you can apply GrapQL to create highly flexible API servers with a minimum effort where the client can choose on how to optimize its communication with the server.  During the webinar, the GraphQL for Delphi product will be officially launched and will become available in both a free edition for non-commercial use and a normal licensed version. Attendees will also be entitled to an introductory discount coupon for purchasing the normal licensed version.   Register now! Register here to ensure your seat for the webinar on February 8 from 5PM to 6PM UTC (18h00 – 19h00 CET)

Read More

Runtime memory profiling and more for Delphi with the new TMS MemInsight

We are very excited to announce a new product TMS MemInsight in the TMS family that results out of the collaboration with long-time Delphi expert Stefan Meisner and the TMS team. Stefan has a deep knowledge of Delphi technical internals to monitor memory allocation, getting call-stack information, exception handling, challenges with multi-threaded development and much more. Together with our focus on bringing easy to use component-based and as low-code as possible solutions and tools, we strongly believe that not only for TMS MemInsight but also future product ideas, we can continue to bring more value to you and come to the 1 + 1 = 11  winning formula. TMS MemInsight v1.0 Whereas most memory allocation tracking tools are static, that is producing a report on application close or upon application crash, the difference with TMS MemInsight is that it is a dynamic memory allocation profiling tool that is used at run-time. This means that also while your application is running without issues, you can monitor where there are possibly performance issues due to consuming huge amounts of memory.  With TMS MemInsight, you can continuously inspect memory allocation during run-time and get information on classes for which memory is allocated and get the class info, call stack, thread, property inspection, memory dump etc… of everything. With a statistics view, it is easy to see where the majority of allocated application memory is going to.  When you run the tool in debug mode with a map file, it is able to directly bring you to the position in the source code in the Delphi IDE of where memory was allocated. TMS MemInsight also allows to provide additional information, most importantly the call stack, when exceptions occur. This allows you to understand better where exceptions come from and remedy these. Getting started To get started with TMS MemInsight is as easy as dropping the TTMSMemInsightProfiler component on the form. With this component on the main form of the application, it is default configured to immediately show the profiler tool when you start your application. Or you can also choose to start the profiler only from code when you need it. You can control at component level or in code, what monitoring tools are active and live. There is not much more to do to get a new deep view on the internals of your application! Discover it also for yourself in this video: What’s next We have plenty of ideas of possible future directions of not only the TMS MemInsight tool but also new complimentary tools. But of course, as always, it is your wishes and requests for specific functionality that steer our development priorities. We look forward to hear from you what enhancements can be done in TMS MemInsight to make your development even easier and what other development tools you further wish. Contact us by email or leave a comment here. 

Read More

10 Compelling Reasons Why You Need Javascript Grid Library

In modern web applications, rendering a large amount of data in tabular format is often an essential requirement. Javascript Grids help web developers efficiently load the data set in rows and columns without significantly affecting the page load speed.  Nowadays, several JavaScript grid libraries are available on the market, enabling developers to integrate many useful and complex operations on tabular data. For example, web developers can use the Sencha Ext Js grid library to provide consumers with useful grid operations like scrolling, sorting, grouping, and filtering. If you are a web developer who hasn’t decided on using a Javascript grid library in your projects, this article will show you why you need to use a Javascript grid library. One of the important reasons you should integrate a grid into your application is to provide a more user-friendly and positive experience to the end-user. When it comes to grid operations like sorting and filtering, responsiveness is important. Because if the user has to wait a long time to get the results, frustration can occur, which negatively affects your companies’ image. Javascript grid libraries consist of everything you need to build highly user-friendly and responsive grids. Grid libraries have been designed to provide better performance in every operation it supports to get the required data as efficiently as possible. When there are many data loaded on one page, the users need to scroll through the page to view the entire data set. Grid libraries can make this scrolling speed efficient where users will hardly experience a delay in loading the data. One example is the Ext JS Grid Library has a scrolling speed that takes seconds. Also, most grid operations like filtering sorting can make efficient according to the amount of data you have to manipulate.  Building a grid on your own can be challenging, especially if your project has a tight schedule to complete. If you want to avoid writing code as much as possible and speed up your development, you must use a Javascript grid library.   A grid library provides different reusable components for building a high-performing grid within a short period. You will have a large feature set from basic to advanced to handle millions of data sets within seconds. External JS Grid library, for example, enables users to use Ext JS Kitchen sink for re-usable components with Grid components. Some components users just have to drag and drop without writing code. This low-code development makes developers’ lives easier and helps them be more productive.    When you integrate a grid into your application, it is important to give attention to its look and feel. Because users tend to engage in UI components that are eye-catching and consistent throughout the application, developing a grid and making your themes from scratch can consume a significant amount of time. JavaScript grid libraries help you easily apply different themes to your grid to enhance its appearance. Most libraries have a collection of predefined themes which you can directly apply.  Also, sometimes you may require to build themes specific to your business requirements. Most grid libraries enable users to build custom themes and use them throughout the application to make the grid appearance consistent. For example, you can use Sencha Themer with Ext JS Grid library to build customized themes for your […]

Read More

The 7 Most Misunderstood Facts About Windows 10 Development

Desktop applications are the most productive apps for the majority of ordinary people. From scientific apps to applications which power user’s creativity, Windows desktop applications lead the market. Moreover, the new Windows 11 has big changes that can ramp up Windows applications to the next level. Windows 11 has a gorgeous visual tweaking of the Windows desktop coupled with a rethinking of how areas of the program could be improved to make a user’s life easier. Since you are a developer, it’s very likely you’re interested in Windows app development. The Windows ecosystem for applications is so huge it’s pretty impossible to ignore There are lots of software development tools available for developing Windows desktop applications, but there are misconceptions about the available tools, the development process, and several other common misunderstandings. Here in this article, we will talk you through the misconceptions and what, instead, is the reality.  1. Do you think you have to use a Microsoft framework? Microsoft itself provides a set of tools to build Windows desktop applications in the box like WPF, UWP, WinForms and the new one is the .NET MAUI. Moreover, they have a big community around those tools. So, if you choose Microsoft Windows development tools, you have to follow the .NET framework, and your application is dependent on that. Other options offer more resilience and have decades of stability. For instance, Delphi is one of the leading programming languages for the development of Windows desktop applications for more than 25 years. Delphi has the Visual Component Library (VCL) that offers you to build a classic desktop application that has all the features that you can get from the classic desktop C++ applications. The difference is that Delphi VCL provides high productivity and a set of built-in components that you can design and develop any type of application in a short amount of time. Be sure to check out the applications that Delphi developers building. 2. Are you worried your Windows App will be bloated like Electron? JavaScript rules the web application market and some software development tools provide features and functionalities that offer you to build Desktop applications using JavaScript along with web technologies.  While it provides easy development for experienced web developers, sometimes it consumes high memory and gives less native user experience compared to those native development tools like Delphi, C++ or C#. For instance, Delphi IDE provides all the available tools to create any type of application. These applications run fast and utilize less memory. Moreover, while building apps with Delphi, you do not experience: DLL Hell Bloated EXEs Slow compilation Complex toolchains 3. Do you believe that Windows development is complicated?  If you are having struggles with your Windows development tools, you might have chosen the wrong development or you are not aware of the available functionalities of it. Delphi with Visual Component Library is one of the most productive Windows desktop development platforms in the market. The built-in visual and non-visual components provide flexibility and productivity for the developers. Moreover, the Visual Component Library (VCL), with its ability to map to classic and modern APIs (from Win API to COM-based APIs, to WinRT) and its support for High DPI monitors, Snap Layouts, and modern UI trends – all without requiring a full application rewrite – is […]

Read More

Top 10 How To’s: RAD Studio

RAD Studio 11 Alexandria comes with a wealth of new super features to boost your productivity and give you access to new services and advances capabilities. The best new features include support for High-DPI 4k screens, provisioning for Windows 11, design-time views of styles, and much more. Here are our 10 favorite picks for getting things done in RAD Studio. 1. How to Use New Platform Identifiers in RAD Studio, Delphi and C++Builder 11 Alexandria I was looking through “What’s New in Version 11 Alexandria” and found a cool tidbit about small changes in the RTL for “Platform Identifiers“. Using these platform identifiers can help in your cross platform development projects. Ensuring that all of the platform related identifiers use a consistent naming pattern will also help in your programming efforts. You will find the new platform identifiers in the  System.Classes.pas and System.Classes.hpp files. Note: a few of the platform identifiers are now marked with the deprecated attribute. Keep Reading >>>   2. How to Work With Delphi 11 Alexandria Defines As part of my recent DelphiCon 2021 session, Multi-Platform Explorations using Delphi, FMX, Feeds, REST and More, my example code needed to use IFDEFs for some of the uses statements, variable definitions and code. This blog post contains an example of the use of defines when compiling for Windows (Win32/Win64), macOS, iOS and Android platforms. I also include screen shots of the sample output on each platform. You can download all of my talk’s sample projects using the session links above. The simple Delphi FireMonkey application includes a TButton and a TMemo. In the Button’s OnClick event handler the code outputs information about the platform and the compiler defines for each platform. Keep Reading >>>   3. How to Work With The New VCL Support in Windows 11 With the official release of Windows 11 , Embarcadero has made available some specific VCL styles and I’m offering some coding helpers specific to the new version of the Microsoft desktop OS. More will come over time. After the announcement earlier this year, Microsoft has now officially released Windows 11 last week. Despite some issues running the new operating system on older computers due to new hardware requirements, the new version of Windows offers a nicer user experience and working environment, while maintaining a very high degree of compatibility with existing applications, including those written with Delphi and C++Builder. We are expecting a lot of end users will move to Windows 11 in the coming months. Keep Reading >>>   4. How to Use Appercept’s New AWS SDK For RAD Studio Enterprise and Architect Embarcadero has reached a two-year exclusive distribution agreement with Richard Hatherall, the UK-based owner of Appercept, on the company’s “AWS SDK for Delphi”. The deal includes an initial preview, with additional features to be released over time. The AWS library and updates are available via GetIt, and limited to customers on Enterprise and Architect with active update subscription. Customers using the AWS library also get support by Appercept through Embarcadero’s own support team. The library does not currently support C++Builder, but there are plans to provide C++ support for the AWS SDK in the future. Keep Reading >>>   5. How to Deploy The New RAD Server Lite (RSLite) in RAD Studio 11 As part of the RAD Studio […]

Read More

How Do Delphi And Electron Line Up on Development Time? Benchmarking Study

Development time is a vital component of any software development project, even before it starts. It relies partly on development tools and partly on developer productivity, and heavily influences cost, upgrade and maintenance estimations. When businesses choose a software framework they begin a long-term relationship for the duration of their application’s lifecycle. Given the strategic consequences of this decision, businesses must carefully consider how frameworks enhance developer productivity, business functionality,application flexibility, product performance, the long-term viability of that framework, and the inherent security in each framework’s design and technology. The ideal framework demonstrates strength in each category by minimizing product time-to-market, reducing maintenance costs, supporting product variety, and facilitating a superior customer experience. The “Discovering The Best Cross-Platform Framework Through Benchmarking” whitepaper evaluates two frameworks supporting multi-platform desktop application development: Delphi and Electron. This is the first in a series of blog posts looking more closely at each of the 26 individual metrics used in the study, and how Delphi and Electron each fared on these metrics. Download the complete whitepaper here Benchmark Category: Developer Productivity Developer productivity is the measure of effort and code required for developers to complete typical development tasks. Productivity directly impacts product time-to-market and long-term labor costs so tools that increase developer productivity have substantial impacts on business timelines and bottom lines. Productivity can be realized in two distinct ways – reduced coding requirements due to native libraries, and IDE tools like code-completion and visual design.IDEs with greater library breadth generally result in fewer lines of code per application and produce a clean, lean codebase that minimizes opportunities for bugs or maintenance problems later in the product life cycle. Benchmark Metric 1/26: Development Time Development Time Metric: Total hours spent writing the fully functional application from scratch. This measurement assesses the value a framework’s productivity tools add to an average developer with no prior task knowledge. Comprehensive documentation, plentiful native libraries, code completion, and other IDE tools will allow the developer to design and build the benchmark application more efficiently than would be the case in a “standard” text editor. Benchmarking Results Delphi Score: 3 (out of 5) One expert Delphi developer completed the Unicode Reader in 23.3 hours using the RAD Studio IDE. Application modification with internal tests took 8.33 hours for a total development time of 31.63 hours. Five other Delphi developers gave estimates for the original application ranging from 24 to 50 hours, averaging 38.8 hours. Electron Score: 5 (out of 5) One expert Electron developer completed the Unicode Reader in 20 hours using Angular for the RSS reader GUI and node-postgres, a collection of node.js modules, for the database interactions. However, application modification with internal tests took an additional 47.8 hours – 28.6 hours to code the tests and 19.2 hours to troubleshoot issues on three platforms until acceptance criteria were met – for a total of 67.8 hours. Three other Electron estimates for the Unicode Reader ranged from 80 to 120 hours with a mean of 100 hours. Download the complete whitepaper here

Read More