Microsoft .NET adoption gets boost from open source

  • 29/July/2021
  • Paul Krill

Microsoft .NET adoption gets boost from open source

Microsoft credits open source and cross-platform support for the increased adoption of its software development platform.

At one time, commercial software giant Microsoft was known as a company that was unfriendly to the open source software movement. Former CEO Steve Ballmer even referred to the popular open source Linux platform as a “cancer.” But now, Microsoft is crediting open source for the increased adoption of its .NET software development platform, in a blog post published this week.

Prior to open source, .NET ran only on Windows. “Now that it is open source, it runs in so many more locations,” said Claire Novotny, .NET Foundation executive director. Open source has made it easier for .NET to be cross-platform, with the company able to collaborate with Linux communities, added Dan Moseley, group manager for .NET libraries at Microsoft. Developers also gain access to the source files of .NET, making the platform easy to trust, he said.

Microsoft released its CoreCLR .NET execution engine as open source in 2015 and introduced the .NET Core open source runtime in 2016. With .NET 5, released in 2020, the company migrated .NET platform development away from the 20-year-old .NET Framework to open source .NET Core. But there have been challenges getting long-time Microsoft customers to adopt open source.

“Many .NET customers have historically composed their apps from Microsoft-supplied libraries, which were historically closed-source, and their own code, and are less comfortable depending on non-Microsoft libraries, which are typically open source,” Moseley said. Microsoft wants to make it easier for customers to trust libraries not coming from the .NET team.

Given that it’s increasingly common for language and runtime implementations to be open source, Microsoft would be conspicuous if it did not follow this pattern, said Kevin Pilch, Microsoft engineering manager for ASP.NET. Open source also opens up interesting collaborations involving individuals and other companies.

What Windows 11 means for developers

  • 06/July/2021
  • Simon Bisson

What Windows 11 means for developers

A new Windows offers an updated UI and big changes to the Windows Store with no limits on application packaging.

Microsoft’s announcement of Windows 11 covers a lot more than an operating system. It sets a direction for Windows application development for the next several years, with a new Windows Store and, more important, a new set of policies for application distribution. Other aspects of the launch include a name for Project Reunion, new WinUI 3 controls, and a new set of material UI elements as part of Windows’ Fluent UI model.

Under the hood, Windows 11 builds on the same Windows-as-a-service model as Windows 10. Insiders using the Dev branch of builds have already been using much of the underlying Windows 11 code, only without its new chrome. The 2xxxx series builds have proven compatible with most Windows applications, so there should be little to worry about with existing code and the new operating system.

Some key Windows 10 features are being deprecated; for example, Live Tiles are no longer supported. This changes the way applications work with the Start menu, but it shouldn’t affect application operation. Microsoft is working on a Widget platform for its applications that will support a quick glance at your Outlook calendar alongside news and weather, which implies a possible set of extensions that may allow third-party access for notifications, but it hasn’t yet unveiled any APIs for this.

Building applications for Windows 11
It’s important to note that there’s no need to pause your Windows application development; what you’re doing right now will still work with Windows 11. You may want to start considering technologies like Project Reunion to modernize older applications, as it’s now a much more important part of the overall Windows developer platform. A new Windows Dev Center site brings together tools and documentation to help you get started.

Project Reunion’s new name, the Windows App SDK, may seem like a small change, but it has big ramifications for Windows. By saying it’s officially the next generation of the Windows SDKs, Microsoft is putting a line under both the Win32 and WinRT years, using Windows 11 as the jumping off point for a new set of SDKs and APIs.

Keep in mind that the Windows App SDK isn’t just for Windows 11. Windows 10 will continue to be supported for several more years and isn’t going away (especially if Microsoft continues to lock out a large number of CPUs from Windows 11 updates). Developers will still need to build Windows 10 code, and knowing that the Windows App SDK will build backwards-compatible code as well as Windows 11 apps should make it easier to transition from Win32 or WinRT. Currently, apps built for Windows 11 will be backwards compatible to the 1809 Windows 10 release.

A 0.8 release was made at Build 2021, adding support for new releases of Visual Studio and updating its WinUI 3 components. It’s supported for packaged MSIX applications, with experimental support for unpackaged apps (which can be distributed using the new Windows Store). The 1.0 release is planned for the fourth quarter of 2021 and will add full application life-cycle support for packaged and unpackaged code, with experimental push notification support for both.

That’s not to say there won’t be issues building code that works in both Windows 10 and Windows 11. For one thing there are some significant architectural changes around elements like the Action Center, which will mean having adaptive code that can work with both sets of APIs. There are also new Windows 11 features, like the Live Tile replacement Widgets. Microsoft has yet to discuss how they’re being opened up to third-party developers.

Using the new UI in your applications
Improvements to WinUI 3 focus on its support for the new-look windowing environment in Windows 11. Obvious features include rounded corners to Windows, new fonts, and a new set of icons. The update includes an update to Windows’ Fluent design language’s material design, adding new materials.

This new option, Mica, is opaque where Acrylic is translucent. This changes the role of Acrylic, which is now only used for temporary UI elements, such as flyouts or drop-downs, which overlay existing UIs. Mica is for permanent UI elements, such as menu bars, where it picks up the background colors from your desktop (and has automatic support for light and dark modes). Another material, Smoke, is used to deemphasize app content and windows when another UI element, such as a dialog, requires interaction, blocking the existing UI.

As Microsoft updates its WinUI controls to take advantage of these new materials, you should find them automatically applied to your code. The new look is already in many of Windows 11’s built-in tools, so you can see how they operate before you use them in your own code.

If you’re building HTML-based applications, Windows 11 now includes the evergreen version of the WebView 2 control, so your applications can always have access to the latest Chromium features. Microsoft is using this to support the next major update to Teams, which will ship as a WebView 2 app rather than Electron, requiring substantially less in the way of system resources.

A new Windows Store
The biggest change is to how applications are distributed, with significant changes to the Windows Store. Users get a refreshed design and new ways of finding apps; the under-the-hood changes are bigger and affect anyone building Windows applications.

First and foremost, there are no limitations on application packaging. Where the Windows 10 Store was limited to appx- and MSIX-packaged code, the new store adds support for packaged and unpackaged Win32 code as well as .NET applications (both using standard XAML and Xamarin), and Java installers. There’s even support for web-based applications built using React Native and Electron (and Microsoft’s own WebView 2), as well as for Progressive Web Apps (PWAs). A new version of PWABuilder will allow developers to create and publish apps based on existing and new HTML and JavaScript content.

Opening up the store to a wider range of applications is a sensible decision since a huge base of existing applications can still run on Windows 11. Those legacy apps now get a new distribution channel, and more important, a new source of monetization. Microsoft isn’t only opening the store to more apps, it’s allowing you to bring your own payment engine. If you’re selling enterprise tools through the Store you don’t have to pay Microsoft 15%; you can offer your own payment service and keep all your revenue.

Other announced features include support for Android apps built using Amazon’s App Store APIs. How this will work in Windows remains to be seen, as initial builds won’t include this feature.

Windows 11 is a mix of the familiar and the new, with Microsoft’s ongoing commitment to backward compatibility making it easy to bring old apps to the new OS and to continue developing new code. It’s worth pulling down insider builds to test code and experiment with the new Windows App SDK, or if you prefer, you can sign up to use Microsoft’s preview cloud-hosted test environment, Test Base, which will have Windows 11 builds and can be automated via Azure DevOps.

Google Boosts V8 JavaScript Performance

  • 01/June/2021
  • Paul Krill

Google boosts V8 JavaScript performance

‘Super-fast’ non-optimizing Sparkplug compiler, which compiles bytecode to machine code, makes its debut in V8 9.1 and Chrome 91.

With the Sparkplug compiler, Google is looking to improve JavaScript performance in its Chrome browser. Sparkplug is debuting in Chrome 91.

Featured as part of Chrome’s V8 JavaScript/WebAssembly engine, Sparkplug is positioned as a “super-fast” non-optimizing compiler. In a bulletin published May 27, Sparkplug is described as part of a compiler pipeline, nestled between the Ignition interpreter and the TurboFan optimizing compiler.


Sparkplug compiles from bytecode rather than from JavaScript source. In other words, Sparkplug compiles functions that already have been compiled to bytecode; the bytecode compiler already having done work such as variable resolution, determining if parentheses actually are arrow functions, and desugaring destructuring statements.

And unlike most compilers, Sparkplug does not generate any intermediate representation. Instead, it compiles directly to machine code via a single linear pass over the bytecode, emitting code that matches the execution of that bytecode. The entire compiler is a switch statement inside a for loop that dispatches machine code generation functions.

Google’s V8 developers noted that, since 2016, they have moved away from tracking synthetic benchmarks, such as Octane, to measuring real-world performance of JavaScript outside of the optimizing compiler. Thus, the team has been working on several other aspects of V8 including the parser, streaming, the object model, and caching compiled code.

The New Features in Java 17

  • 27/April/2021
  • Paul Krill

JDK 17: The new features in Java 17

A new rendering pipeline for MacOS and a uniform API for pseudo random number generators are planned for the Java long-term support release due in September.

Although not due until September, Java 17 has already begun to take shape, with four new features planned for the upgrade to standard Java so far. In the latest change, as of April 27, the experimental Java-based ahead-of-time (AOT) and just-in-time (JIT) compiler will be removed.

Java Development Kit (JDK) 17 will be a long-term-support (LTS) release, with extended support from Oracle expected for several years.

Features filed as part of OpenJDK’s JDK 17 include:

-Removal of the experimental AOT and JIT compiler, which has seen little use but requires significant maintenance effort. The plan calls for maintaining the Java-level JVM compiler interface so developers can keep using externally built versions of the compiler for JIT compilation. AOT compilation (the jaotc tool) was incorporated into JDK 9 as an experimental feature. The tool uses the Graal compiler, which is itself written in Java, for AOT compilation. These experimental features were not included in JDK 16 builds published by Oracle and no one complained. Under the plan prescribed, three JDK modules would be removed: jdk.aot (the jaotc tool); internal.vm.compiler, the Graal compiler; and jdk.internal.vm.compiler.management, the Graal MBean. HotSpot code related to AOT compilation also would be removed.

-Porting the JDK to MacOS/AArch64 in response to Apple’s plan to transition its Macintosh computers from x64 to AArch64. An AArch64 port for Java already exists for Linux and work is underway for Windows. Java builders expect to reuse existing AArch64 code from these ports by employing conditional compilation, as is the norm in ports of the JDK, to accommodate differences in low-level conventions such as the application binary interface and the set of reserved processor registers. Changes for MacOS/AArch64 risk breaking the existing Linux/AArch64, Windows/AArch64, and MacOS/x64 ports, but the risk will be reduced through pre-integration testing.

-Deprecating the Applet API for removal. This API is essentially irrelevant, since all web browser vendors either have removed support for Java browser plug-ins or have announced plans to do so. The Applet API previously was deprecated, but not for removal, in Java 9 in September 2017.

-A new rendering pipeline for MacOS, using the Apple Metal API as an alternative to the existing pipeline that uses the deprecated OpenGL API. This proposal is intended to provide a fully functional rendering pipeline for the Java 2D API that uses the MacOS Metal framework and be ready in the event Apple removes the OpenGL API from a future version of MacOS. The pipeline is intended to have functional parity with the existing OpenGL pipeline, with performance as good or better in select applications and benchmarks. A clean architecture would be created that fits into the current Java 2D model. The pipeline would coexist with the OpenGL pipeline until obsolete. It is not a goal of the proposal to add any new Java or JDK APIs.

-Enhanced pseudo-random number generators that would provide new interface types and implementations for pseudorandom number generators (PRNGs) including jumpable PRNGs and an additional class of splittable PRNG algorithms (LXM). A new interface, RandomGenerator, would supply a uniform API for all existing and new PRNGs. Four specialized RandomGenerator interfaces would be provided. Motivating the plan is a focus on multiple areas for improvement in the area of pseudorandom number generation in Java. The effort does not call for providing implementations of numerous other PRNG algorithms. But three common algorithms have been added that already are widely deployed in other programming language environments. Goals of the plan include:
-Making it easier to use various PRNG algorithms interchangeably in applications.
-Improved support for stream-based programming, providing streams of PRNG objects.
-Elimination of code duplication in existing PRNG classes.
-Preservation of existing behavior of class java.util.Random.

In coming months, it’s likely more features will be proposed for JDK 17. Possibilities include a foreign linker API, a vector API, and a foreign-memory access API, all of which are currently in an incubator stage in the JDK 16 release published March 16. Sealed classes, in a second preview in JDK 16, could become generally available in JDK 17. Pattern matching could be the focus of JDK 17 proposals, as well.

September 14 has been slated as the general availability date for JDK 17. The production release will be preceded by rampdown phases in June and July and release candidates in August. Early-access open source builds of JDK 17 can be found at jdk.java.net.

LTS releases such as JDK 17 arrive every three years. The last LTS release, JDK 11, was published in September 2018. New releases of Java arrive every six months. The current release line of standard Java is JDK 15.

 

 

Digital Transformation in Wealth Management

  • 15/April/2021
  • Raman Rajendran

Digital transformation in wealth management

Investopedia defines Wealth Management as an investment advisory service that combines other financial services to address the needs of affluent clients.

Traditionally, the business of wealth management is based on personal relationships and trust as client engagement involves several individuals and manual processes. The clients deal with an investment advisor who is supported by the middle and back-office staff – the opening of accounts, transfer of money and transactions are all performed by various individuals and thus prone to human error. While it appears to be a smooth functioning place to an outside observer, in reality, it’s hardly ever the case.

The current business model has poor scalability and efficiency – according to McKinsey, the need of the hour is a next-generation operating model that is supported by Data, Analytics, and Technology. The pandemic has catalyzed this inevitable change since it caused a shift towards digital modes for sales and delivery of advisory services. The clients seem to have accepted the change too and expect the best of the changes to continue post-pandemic.

We are currently at a juncture when the industry’s business models are getting disrupted, with digitization accelerating the change. Here are a few of the several drivers bringing changes to the world of wealth management.

Data & Analytics

The wealth management industry seems to be behind the curve in terms of the adoption of Data & Analytics. However, leveraging D&A for different business processes such as client advisory, portfolio building &management, risk evaluation, etc. could significantly enhance the value delivered by wealth management firms.

Data analytics benefits advisors and clients alike – better analytics and visualization tools can add value to the vast amounts of data that advisors deal with. Leveraging advanced data analytics tools and techniques, wealth management organizations can generate meaningful and actionable insights for their clients to make informed investment and business decisions.

Cloud Adoption

Most wealth management firms struggle with the complexities and inconveniences of legacy software systems – cloud computing allows for modernization without changing the IT landscape completely in one go, as it can be implemented in a modular manner.

The pay-per-user function also transforms the way in which wealth management firms create and offer customized applications and services.

Future-forward firms have begun planning their cloud transformation strategies, as they are well aware of the challenges involved in implementing one, while simultaneously being convinced of the many positives it brings, including the ability to help Wealth Managers use their resources more efficiently, plan their budget management and allocation, and help the organization to obtain flexibility by building an enabling IT infrastructure.

Robo-Advisory

Robo-advisors are defined as digital platforms that provide automated, algorithm-driven financial planning services with little to no human supervision – they collect information from clients about their financial situation and future goals through an online survey and then use the data to offer advice and automatically invest client assets – thus, they are also called Automated Wealth Managers.

They are an attractive option for young investors who don’t have a large sum to begin investing with, who don’t necessarily need the face-to-face human interaction and relationships that the older generations prize, and who would rather not spend a lot of money on wealth manager fees.

RegTech

Complying with industry regulations is a high-risk area for wealth management firms since any failure on their part can result in financial losses in addition to costing them their reputation as well as punitive measures by Governments. Firms have begun to employ technology to perform functions such as due diligence, transaction monitoring, regulatory reporting, data management, and so on to reduce regulatory risks as well as costs.

RegTech, or Regulatory Technology, not only eases the burden of compliance for wealth management companies but utilizes AI, data mining algorithms based on machine learning, offers services on the cloud and integrates with existing systems in organizations through APIs to make it easier for firms to adopt new technologies.

In conclusion, digital transformation is already underway in the wealth management industry. However, the successful transformation and adoption would require the organization to adopt it with an open mind. Technology adoption may be risky, but those firms that can adapt and embrace the change would fare better in the long term.

Experion Technologies is a digital transformation expert with over 14 years of experience working with clients from the Financial Services industry. We have been instrumental in the digital transformation journeys of several firms, equipping them with the advantages of D&A, AI&ML, and Cloud Adoption to build a more future-proof business. For instance, Experion proposed a data analytics-powered investment advisory services platform as a solution to the challenges a leading wealth management firm in the US faced. Designed with an intuitive interface on Web, Desktop, Android, and iOS devices, the investment advisory services platform helped its users to manage different kinds of investment portfolios seamlessly.

What's new in Microsoft .NET 6

  • 16/March/2021
  • Paul Krill

What’s new in Microsoft .NET 6

Microsoft has published the second preview of .NET 6, the next generation of the company’s software development platform that will finish the parts of the .NET unification begun in .NET 5. Preview 2 features API and library improvements, runtime performance boosts, and early builds of .NET MAUI (Multi-platform App UI), which is a modern UI toolkit that builds upon Xamarin.

Due as a production release in November, .NET 6 is set to deliver improvements for cloud, desktop, and mobile apps. Preview 2 was published March 11, following the initial preview that arrived February 17. Monthly previews are planned between now and the production release, which will be supported for three years. Each preview will deliver on .NET 6 themes, epics, and user stories for developing server/cloud, desktop, IoT, and mobile applications.


Microsoft .NET 6 will integrate capabilities for Android, iOS, and MacOS that currently reside in the Xamarin open source mobile .NET platform. Microsoft also is extending the Blazor client web app development tool, so developers can build a hybrid client app that combines web and native UIs for desktop and mobile usage. Blazor WebAssembly was the first unified platform deliverable in .NET 5. Published in November 2020, .NET 5 marked the beginning of unification and laid the groundwork for Xamarin developers to use the unified .NET platform when .NET 6.0 arrived.

The .NET unification creates one .NET from the separate .NET Core, .NET Framework, and Xamarin/Mono technologies. Parts of .NET Framework already had moved to .NET Core; .NET 5 began the journey of combining .NET Core and Mono/Xamarin on a base class library and toolchain.

Microsoft’s bulletin on .NET 6 Preview 2 emphasizes themes for the platform such as improving “inner loop” performance, i.e., optimizing the tools and workflows used frequently and repeatedly by developers to update, build, and test their code. Hot reloads, for example, will improve developer productivity by enabling code to be edited while an app is running, even without a debugger attached. Runtime startup performance, application models, the dotnet CLI, and MSBuild are also getting attention as part of the inner loops theme.

Another theme is improving the client app development experience, including a more unified mobile product for .NET. As part of this effort, iOS, Android, and MacOS development will be integrated into the .NET SDK experience and use .NET libraries. In addition, the Xamarin.Forms cross-UI framework is evolving into .NET MAUI, which will allow developers to create apps for Android, Windows, and MacOS from the same codebase. Blazor apps will run natively on Windows and MacOS via .NET MAUI.

Microsoft also touted the addition of APIs and improvements to .NET libraries. For example, JsonSerializer (System.Tex.Json) now supports the ability to ignore cycles when serializing an object graph, while PriorityQueue<TElement.TPriority> is a new collection that enables the addition of new items with a value and a priority. Preview 2 also brings better parsing of standard numeric formats as well as runtime and JIT improvements.


Preview 1 of .NET 6 introduced Android and iOS as the first two platforms supported in MAUI. Future previews will add MacOS and Windows desktop support. Blazor, which is built on top of MAUI, relies on the UI stack for a native application container and native application container controls.

Also in the works in and around .NET 6:

-To enable fast builds and faster operations for code changes as a standard feature of .NET, Microsoft is defining a new hot code reload model for all app types. Anchoring the effort is fast inner loop, a project supporting fast, iterative development. Part of the project entails enabling code edits to be applied to a live process without restarting, thus skipping a build.

-For ARM64 hardware, .NET 6 will focus on functional enablement. On Windows, Preview 1 will support Windows Forms and Windows Presentation Framework. On the Mac, Preview 1 will add support for Apple Silicon (Arm64) chips.

-Multiple efforts are afoot to improve containers in .NET 6, including improving scaling, reducing container size, and increasing startup and throughput performance.

-The .NET thread pool has been reimplemented as a managed implementation and is now the default thread pool in .NET 6.

-Microsoft aims to improve startup and runtime throughput in .NET 6 using runtime execution information. This will be done via Profile Guided Optimization (PGO), the beginnings of which are in Preview 1.

-With .NET 6, single file apps have been enabled for Windows and MacOS. They had been limited to Linux in .NET 5.