Windows 10 and Visual Studio 2015: A Great Combination
Microsoft’s latest releases are Windows 10 and Visual Studio 2015 (Fig. 1). Together they are a great combination. Windows 10 targets a range of platforms from smartphones to workstations, as well as embedded devices. Windows Server is a different animal, but compatible with Windows 10. Many applications will run on both. Windows Server 2012 is the current platform, but Windows Server 2016 is in the wings.
1. Visual Studio 2015 runs on Windows 10 as well as earlier versions of Windows. It supports a wide range of target environments from embedded devices to enterprise services.
Many of the new features in Windows 10 are visible to the user and address issues that arose with Windows 8.
Windows 10 desktop and start menu are what users will see when they first log in (Fig. 2). The Live Tile functionality is now in the start menu. Tablet operation has changed, but the large Live Tiles that are easy to use on touchscreens remain. They do scroll vertically instead of horizontally, but overall the touch interface has not fallen to the wayside with the desktop focus for desktops. Overall, Windows 10 is what Windows 8 should have been.
2. Many of the new features in Windows 10 are visible to the user and address issues that arose with Windows 8.
All applications are now windowed versus the full screen for Windows 8 and Metro apps. Windows 8 always had a desktop mode, but there was a dichotomy between the two. The more unified approach is greatly appreciated. The technology even has a name, Continuum. Continuum lets users switch between desktop and touch presentation modes, although dynamically switching will likely be something users of two-in-one devices do, especially when physically switching between modes.
Two new major apps include Cortana, Microsoft’s digital assistant application that started on Windows Phone 8.1, and the Edge Browser. Edge may eventually spell the end of Internet Explorer (IE), but the IE we have always used is still there. It is just not what Microsoft is pushing these days. Edge is designed to be more of a lightweight, limited-clutter browser to take on the competition.
Virtual desktops are finally native to Windows. I have used third-party tools with Windows in the past and I always use it on my graphical Linux machines. It is a power-user thing, but one that is very handy given the plethora of active applications most any desktop or portable PC can handle. Unfortunately, I have yet to figure out whether it is possible to have unique backgrounds for each virtual screen.
Another new tool is the Action Center. It is essential notifications for the desktop. This has been common on smartphones where pop-ups and reminders haunt us daily. The Action Center also doubles as a quick-function activation locale for turning on features like Bluetooth.
Windows 10 Updates
I like most of the new or improved features of Windows 10, but there are still some things I am concerned about. Windows 8 security was good and Windows 10 is better, but the default setup has the first user as the administrator. Most people may add regular users or even take advantage of the child-management support, but they still use that administrator-capable account as the default.
Another new “feature” is the inability to turn off updates or to stop having Windows 10 phone home to Microsoft and deliver info about your machine. This was normally done as part of the Windows Customer Experience Improvement Program (CEIP) that you could opt out of, as well as the automatic update feature that you could control. The controls for these items are still there, but turning everything off does not really turn “everything” off.
This “feature” is being rolled back into Windows 7 and 8 and will likely wind up on most machines since automatic updates are the default setting. These include:
- KB3068708—Update for customer experience and diagnostic telemetry
- KB3075249—Update that adds telemetry points to consent.exe in Windows 8.1 and Windows 7
- KB3080149—Update for customer experience and diagnostic telemetry
One of the updates is mandatory.
To be fair, lots of applications send information back to their creators or managers. This is especially true on smartphones and tablets. Many will not let you disable this “feature” either.
This issue is a concern for regular and corporate users, but it could have a significant impact on embedded developers. At this point, Windows Embedded 8 Standard is the embedded platform that is available and it provides more modular control of system configuration. This will hopefully be the case for Windows Embedded 10 Standard.
Windows 10 for Developers
Windows 10 does bring a lot under the hood for developers. I have already written about the Universal Windows Platform (UWP) applications. UWP is designed to allow an application to run across the Windows 10 targets from the smartphone to the PC.
DirectX 12 is the latest for Windows gaming, which is a very big market. DirectX 11 is the dominant platform for existing GPUs, but the latest sport DirectX 12 drivers and recent, older hardware will likely gain DirectX 12 support.
The biggest change to DirectX 12 is Direct3D’s low-level hardware abstraction support. DirectX 11 did a good job of hiding the underlying hardware, but that meant it was more difficult to take advantage of new hardware features.
The direct-draw functionality has been streamlined to reduce overhead. There is a delay when a CPU initiates a GPU operation. Games that were CPU-limited will see improvement with this change. It was found in AMD’s Mantle SDK.
DirectX 12 now allows explicit control of multiple GPUs. This can be important because GPUs are often used for computation, not just rendering. The Explicit Multi-Adapter support allows an application to take advantage of multiple GPUs even if they are different types. This will often be the case with new CPUs that incorporate a GPU. AMD and Intel both offer integrated solutions. This allows the GPU hardware to be used even when one or more GPU cards are being used.
There are a host of new features and updates throughout Windows 10. For example, Windows 10 supports the AllSeen Alliance's AllJoyn protocol. This is an Internet of Things (IoT) device interoperability protocol originally developed by Qualcomm.
On the networking side, Bluetooth can now support advertisements. The Sockets and WiFi Direct APIs have also been updated.
Windows 10 IoT Core
Microsoft’s nod to IoT is the Windows 10 IoT Core. This is actually the core of Windows 10, but it has been extracted and made available for other platforms. The idea is that the core is significantly smaller than Windows 10 and it is also available for select platforms that do not match the capabilities of the latest x86 chips from AMD and Intel (such as Intel’s new Skylake). This includes Intel’s low-end Quark architecture that is designed for IoT applications and gateways. The Raspberry Pi is another target.
Windows 10 IoT Core includes the CoreCLR (common language runtime) and .NET support. CoreCLR is actually an open-source project on Github. The operating system support allows the same code to run on one of the Windows 10 IoT Core platforms as well as the standard Windows 10 environments. It also means that the same tool can be used to make applications for either environment. The most common development tool is Microsoft's Visual Studio.
Visual Studio 2015
It was fun to get back to Visual Studio. I had not really exercised Visual Studio 2013 and wanted to check out some of the other languages that it supports, including Python and F#. C, C++, and C# are the main languages for embedded developers. Of course, Visual Basic and Javascript are standard fare as well. Getting access to Python and F# was trivial this time. It was just a matter of creating a project and letting Visual Studio download the required tools.
Visual Studio 2015’s collaboration is amazing. It provides single sign-on support for multiple services that are becoming more common as developers interact with the cloud.
Visual Studio has always been able to handle cross-platform support, but this process has been streamlined and the number of out of the box platforms that are supported is impressive. It is possible to use Apache Cordova with HTML/Javascript applications or use C# with platforms like Xamarin and Unity. This includes support for cross-platform debugging on platforms like Cordova, Xamarin, Unity, and Android. Of course, there is the UWP support for C#, C++, Visual Basic, and JavaScript applications and the UWP device preview option can show what an application will look like for different screens.
One tool I always look at is the debugger. Visual Studio 2015 has new breakpoint and exception interfaces that are easier to use and provide more functionality, including the cross-platform support already mentioned. It is also possible to use LINQ and lambda expressions in the watch and immediate windows.
Another new feature in the IDE is live code analysis that occurs while typing in new code. It uses a quick-action light-bulb icon to highlight items of interest (Fig. 3). Moving the mouse cursor over the light bulb causes Visual Studio to present a set of information and fixes such as an indication that an interface has not been properly defined and how to address the problem.
3. The live code analysis light-bulb icon highlights the availability of hints to improve the application code.
I have just started refamiliarizing myself with Visual Studio and it has been a lot of fun. I have always preferred an IDE to a basic set of tools and a text editor, and it is features like those in Visual Studio 2015 that improve the application creation and diagnostic process.