Archive for the ‘Microsoft’ Category
Recently Immo Landwerth post about .NET Standard 2.0 appeared in the web. Briefly, it is the unification of three major.NET Framework branches: .NET Framework, .NET Core and Xamarin. Simply saying, it is an API set which will be implemented by all platforms. This will join up the .NET platforms and stave off future fragmentation. This means that developers don’t need to master three different base class libraries to write code that runs across all of them. As long as industry is rapidly changing new .NET features will be designed by Microsoft or someone else.
A significant change is that .NET Standard will replace Portable Class Libraries (PCLs) in order to build multi-platform .NET libraries. Although the gist will be the same for developers, but implementation will be different.
The .NET Standard will include two types of APIs, the ones which are absolutely necessary to be implemented by all platforms, and optional APIs, which are not obligatory to be implemented. The last will be available as individual NuGet packages.
The APIs that can not be implemented on all platforms can be divided into two groups: specific APIs for each runtime and specific APIs for each OS. There are three ways to deal with unrealizable API. The first one is to make API unavailable. Secondly, you can make API available, but throw PlatformNotSupportedException on the platforms where there is no implementation. And also you can simulate API (as Mono does, partially simulating the registry as .ini files).
.NET Standard uses all of these variations and their combination, depending on the situation. Technologies that are available only on certain platforms will be implemented as NuGet packages. If it is unreal to make a stand-alone package, then there are options: throw an exception or simulate API.
In this table the arrows are showing the platform ability to support a higher version of .NET Standard. For example, .NET Core 1.0 supports the .NET Standard version 1.6, which is the reason why arrows point to the right for the lower versions 1.0 – 1.5.
As you can see, the 4.6.1 framework version meets twice. With this version exactly .NET Standard 2.0 will be compatible, as well as future versions of Xamarin and .NET Core. There was a roll back of changes that were included in versions 1.5 and 1.6. This was done in order to support backward compatibility. Newer versions of .NET Standard should contain previous and new features. During the analysis of NuGet.org only 6 packages with .NET Standard 1.5/1.6 target platform were found, the author of which is not Microsoft, so it was decided to take 4.6.1 as a basis, and to offer the authors of these 6-packs to update them.
PCL is replaced by .NET Standard, but you are still able to work with it. You can make a reference from one .NET Standard library to another, or to PCL library.
Graphically, this looks as follows:
In addition, it is possible to make a reference to a conventional .NET library using the compatibility shim.
But it will only work in case all APIs in this .NET library are supported by .NET Standard. In this case it will be much easier to apply the references to existing libraries.
The following image shows the main APIs of .NET Standard 2.0
Opportunities which are likely to appear in .NET Core are quite predictable as long as this brunch has less possibilities than others.
As for Xamarin, many of these APIs have been included in the release of Cycle 8 / Mono 4.6.0
Source: .Net Blog.
What do you think about these new features? Please feel free to share your thoughts with us. Thank you in advance!
Business Development Manager
Professional Software Development
We see this “Is Java out of business?” question pop up year after year. They say that Java is the least feature-rich language of the popular languages on the JVM and the slowest to move on new features in the last decade. There are also people who believe that because so many new JVM languages are being invented is proof that the Java language is lacking and that Java is no longer meeting the needs of many developers. And yet, by all external markers, Java is alive, well, and growing.
Here are several proofs for it:
1. TIOBE ranked Java as its top language of 2015 currently shows it enjoying 5% growth in use since 2014, more than any other programming language.
2. RedMonk has recently published the latest edition of its bi-annual list of the top programming languages. Compiled with the help of data obtained from GitHub and StackOverflow, this list tells us about the usage and discussion of a language on the web. Just like the previous years Java is among the top of the programming languages.
3. Further, the PYPL Index, which ranks languages based on how often language tutorials are searched on Google, shows Java clearly out in front with 23.9% of the total search volume.
Since Java first appeared it has gained enormous popularity. Its rapid ascension and wide acceptance can be traced to its design and programming features, particularly in its promise that you can write a program once, and run it anywhere. Java was chosen as the programming language for network computers (NC) and has been perceived as a universal front end for the enterprise database. As stated in Java language white paper by Sun Microsystems: “Java is a simple, object-oriented, distributed, interpreted, robust, secure, architecture neutral, portable, multithreaded, and dynamic.”
So here are the most common and significant advantages of Java that helped it to take its high position in a quite competitive environment of programming languages:
- Java is easy to learn.
Java was designed to be easy to use and is therefore easy to write, compile, debug, and learn than other programming languages.
- Java is platform-independent.
One of the most significant advantages of Java is its ability to move easily from one computer system to another. The ability to run the same program on many different systems is crucial to World Wide Web software, and Java succeeds at this by being platform-independent at both the source and binary levels.
- Java is secure.
Java considers security as part of its design. The Java language, compiler, interpreter, and runtime environment were each developed with security in mind.
- Java is robust.
Robust means reliability. Java puts a lot of emphasis on early checking for possible errors, as Java compilers are able to detect many problems that would first show up during execution time in other languages.
- Java is multithreaded.
Multithreaded is the capability for a program to perform several tasks simultaneously within a program. In Java, multithreaded programming has been smoothly integrated into it, while in other languages, operating system-specific procedures have to be called in order to enable multithreading.
Nonetheless things changed since the time when Java was created. In the recent years, many important languages have appeared and left an impact on the technology world. Due to their simplicity and user-friendliness, they have managed to surpass the more established languages. So we tried to make a list of reasons why Java is going to stay on the grind in the nearest future:
1. Java is time-proved.
You generally need a strong reason to switch from a language you’re currently using: it requires time to practice and learn new languages, and you have to be confident that the language you’re considering switching to will be supported in the long term. Nobody wants to build software in a language that will be obsolete in five years’ time.
2. JVM and the Java Ecosystem.
The Java Virtual Machine, or JVM. compiles programs into bytecode, which is then interpreted and run by the JVM. Because the JVM sits above your specific hardware and OS, it allows Java to be run on anything, a Windows machine, a Mac, or an obscure some flavor of Linux.
The big advantage granted by the JVM is in this increased compatibility and the stability it affords. Because your application runs in the VM instead of directly on your hardware, you can program said application once and trust that it is executable on every device with a Java VM implementation. This principle is the basis for Java’s core messaging: “Write once, run everywhere.” And it makes Java applications very resilient to underlying changes in the environment.
3. Java and the Internet of Things.
“I really think Java’s future is in IoT. I’d like to see Oracle and partners focused on a complete end-to-end storage solution for Java, from devices through gateways to enterprise back-ends. Building that story and making a success of it will help cement the next 20 years for Java. Not only is that a massive opportunity for the industry, but also one I think Java can do quite well,” said Mike Milinkovich, Executive Director of the Eclipse Foundation.
Oracle agrees. Per VP of Development Georges Saab, “Java is an excellent tech for IoT. Many of the challenges in IoT are many of the challenges of desktop and client Java helped address in the 1990s. You have many different hardware environments out there. You want to have your developers look at any part of the system, understand it and move on. Java is one of the few technologies out there that lets you do that.”
Thus, Java might have its detractors, and some of their arguments might even be reasonable. Nonetheless Java has evolved a lot since its inception, holds the lead in many areas of software development and has more prospects for the future. So, in our opinion, its survivability is not in doubt.
And what do you think? Is Java going to become one of the dead languages? Or it has all chances to survive? Feel free to share your thoughts in comments below!
Business Development Manager
Professional Software Development
Wearable tech devices, such as smart watches and bracelets, have firmly stepped into our everyday life and accompany us in different spheres of life. And who knows, we may soon witness the next tech revolution in the wearable world.
Microsoft Research and MIT Media Lab PhD students have teamed up to create the next level of wearable: temporary smart tattoos.
The technology is named DuoSkin. These tattoos consist of artistic arrangements of conductive gold and silver leaf, plus tissue-thin electronics. Users can apply the tattoo to their body with a wet cloth, similar to any other temporary tattoo.
The fabrication process is fairly simple: first, you design a stencil with any graphic design software, and cut the pattern out of tattoo paper and vinyl. Then you place the gold leaf layer on top to create conductivity, and attach surface-mount electronics.
Smart tattoos can be used for several purposes. Firstly, the tattoo can act as an interface that can be used, for example, as a trackpad or a button to remotely control devices. It may be quite demanding in the near future as our devices get smaller and smart tattoos could provide some additional auxiliary area, without carrying a larger device. Secondly, they can track and show users information about themselves, for example they can change color depending on the user’s mood or show body temperature. A third possible function is wireless communication. The tattoo could include an NFC (near field communications) tag, an electrical component that includes small microchips to store data that can be read by phones or other NFC devices nearby. In the near future, the technology could serve as a substitute for identification, subway cards, etc.
Cindy Hsin-Liu Kao, the lead researcher, calls DuoSkin a “project” and not a product or prototype. Others may use this information as a basis to create their own personalized on-skin wearables.
Lets’s think a bit out of the box:) The future presented in some fantastic films is about to come to reality: not more physical devices but different tattoos and built-in chips:) Аnd what do you think about smart tattoos? Will they change the wearable world or will soon be forgotten?
Business Development Manager
Professional Software Development
Introducing ASP.NET Core:
ASP.NET Core is a new open-source and cross-platform framework for building modern cloud based internet connected applications, such as web apps, IoT apps and mobile backends. ASP.NET Core apps can run on .NET Core or on the full .NET Framework. It was architected to provide an optimized development framework for apps that are deployed to the cloud or run on-premises. It consists of modular components with minimal overhead, so you retain flexibility while constructing your solutions. You can develop and run your ASP.NET Core apps cross-platform on Windows, Mac and Linux. ASP.NET Core is open source at GitHub.
The framework is a complete rewrite that unites the previously separate ASP.NET MVC and Web API into a single programming model.
Despite being a new framework, built on a new web stack, it does have a high degree of concept compatibility with ASP.NET MVC.
ASP.NET Platform exists for more than 15 years. In addition, at the time of System.Web creation it contained a large amount of code to support backward compatibility with classic ASP. During this time, the platform has accumulated a sufficient amount of code that is simply no longer needed and is deprecated. Microsoft faced a difficult choice: to abandon backward compatibility, or to announce a new platform. They chose the second option. At the same time, they would have to abandon the existing runtime. Microsoft has always been a company focused on creation and launch on Windows. ASP.NET was no exception. Now the situation has changed: Azure and Linux occupied an important place in the company’s strategy.
The ASP.NET Core is poised to replace ASP.NET in its current form. So should you switch to ASP.NET Core now?
ASP.NET Core is not just a new version. It is a completely new platform, the change of epochs. Switching to ASP.NET Core can bring many benefits: compact code, better performance and scalability. But what price will be paid in return, how much code will have to be rewritten?
.NET Core contains many components, which we are used to deal with. Forget System.Web, Web Forms, Transaction Scope, WPF, Win Forms. They no longer exist. For simple ASP.NET MVC-applications changes will be minor and the migration will be simple. For more complex applications, which use a great number of .NET Framework classes and ASP.NET pipeline situation is more complicated. Something may work and something may not. Some part of the code will have to be rewritten from scratch. Additional problems may be caused by WebApi, because ASP.NET MVC subsystems and WebAPI are now combined. Many libraries and nuget-packages are not ready yet. So, some applications simply will not have a chance to migrate until new versions of the libraries appear.
I think we are waiting for the situation similar to the transition from Web Forms to ASP.NET MVC. ASP.NET Framework will be supported for a long time. First, only a small amount of applications will be developed on ASP.NET Core. Their number will increase, but sooner or later everyone will want to move to ASP.NET Core. We still have many applications running on the Web Forms. However, no one comes to mind to develop a new application on the Web Forms now, everybody chooses MVC. Soon the same happens to ASP.NET Framework, and ASP.NET Core. ASP.NET Core offers more opportunities to meet modern design standards.
The following characteristics best define .NET Core:
- Flexible deployment: Can be included in your app or installed side-by-side user- or machine-wide.
- Cross-platform: Runs on Windows, macOS and Linux; can be ported to other OSes (Operating Systems). The supported OSes, CPUs and application scenarios will grow over time, provided by Microsoft, other companies, and individuals.Command-line tools: All product scenarios can be exercised at the command-line.
- Compatible: .NET Core is compatible with .NET Framework, Xamarin and Mono, via the .NET Standard Library.
- Open source: The .NET Core platform is open source, using MIT and Apache 2 licenses. Documentation is licensed under CC-BY. .NET Core is a .NET Foundation project.
- Supported by Microsoft: .NET Core is supported by Microsoft, per .NET Core Support.
- As for the “cons” one of the biggest issues are gaps in the documentation. Fortunately most of the things for creating and API are covered, but when you’re building an MVC app, you might have problems.
- Next problem – changes. Even if you find a solution to your problem, it could have been written for a previous version and might not work in the current one. Thanks to open source nature of it, there is also support available on github. But you get same problems there (apart from searching).
- Another thing is lack of support in the tooling. You can forget about NCrunch or R# Test Runner. Both companies say they will get to it when it gets more stable.
- ASP.NET Core is still too raw. Many basic things, such as the Data Access, is not designed for 100%. There is no guarantee that the code you are using now will work in the release version.
- It’s modular. You can add and remove features as you need them by managing NuGet packages.
- It’s also much easier and straightforward to set up.
- WebApi is now part of the MVC, so you can have class UserController, which will return a view, but also provide a JSON API.
- It’s cross-platform.
- It’s open-source.
ASP.NET Core is the work on the bugs of the classic ASP.NET MVC, the ability to start with a clean slate. In addition, Microsoft also aims to become as popular as Ruby and NodeJS among younger developers.
NodeJS and ASP.NET have always been rivals: both – a platform for backend. But in fact, between them, of course, there was no struggle. The new generation of developers, the so-called hipster developers, prefer Ruby and Node. The adult generation, people from the corporate environment, are on the side of .NET and Java. .NET Core is clearly trying to be more youthful, fashionable and popular. So, in future we can expect the .NET Core and NodeJS to be in opposition.
In its advertising campaign, Microsoft is betting on unusual positions for it: high performance, scalability, cross-platform. Do you think that ASP.NET “crawls” on the territory of NodeJS? Please feel free to share your thoughts with us.
Thank you in advance!
Business Development Manager
Professional Software Development
Microsoft Azure (called Windows Azure before 25 March 2014) is a cloud computing platform and infrastructure, created by Microsoft, for building, deploying and managing applications and services through a global network of Microsoft-managed data centers. It is a growing collection of integrated services – compute, storage, data, networking and app.
It provides both PaaS and IaaS services, which for the general public means a powerful combination of managed and unmanaged services. These services let you build, deploy and manage applications any way you like. Its hybrid cloud solution allows you to store data, backup, recover and build applications in your data center and the public cloud.
With cloud and hybrid services expected to reach US$108 billion by 2017, demand for Microsoft’s cloud products including Microsoft Azure is booming. For now:
- 57% of Fortune 500 companies are using Microsoft Azure
- It welcomes 1,000 new customers per day
- Currently 1.2 million businesses and organizations use Microsoft Azure Active Directory
- Microsoft Azure gains two times the compute and storage capacity every 6-9 months
What benefits do companies gain from using Microsoft Azure?
Using a cloud computing platform service like Microsoft Azure provides companies with a number of benefits apart from premium storage space and high-performance. The business benefits include:
- Efficiency – Azure Solutions and Services are known for delivering better-quality products as well as high operational efficiency because of reduced capital costs. Customers and partners can truly realize a huge reduction in total cost of operations and reduced workloads in a small time period.
- Increased scalability to match demand – as your customer base grows and the usage of your application increases you can just add additional capacity to make sure your application is running smoothly. You don’t have to worry about running out of server capacity.
- More flexibility and creativity – applications can very quickly be deployed to the Microsoft Azure platform which means that changes can be applied without any downtime. This makes it an ideal platform for your developers to add functionality to your application.
- Agility – developers would find a host of development tools to take benefit, including automated service management and improved data center presence internationally to reply faster to diverse customer needs.
- Simplicity – Azure makes use of prevailing development skills in familiar languages such as .Net and even open source languages like Java and PHP to produce and manage applications and services.
- Trustworthiness – Windows Azure delivers enterprise-class service with consistent service level agreements based on Microsoft’s unbelievable service experience.
Among Azure customers are such companies as HEINEKEN, GE Healthcare, Temenos, Zespri International, 3M, Skanska USA, Xerox, Diebold which speaks for itself🙂
What position does Microsoft Azure takes up in public cloud?
According to Rightscale releases 2015 state of the cloud report Azure is progressing among enterprises, while Amazon Web Services (AWS) continues to dominate in public cloud with 57 percent of technical professionals saying that they run applications on AWS. That’s up from 54 percent a year earlier.
By comparison, Microsoft Azure’s cloud platform and infrastructure posted a combined score of 19 percent. But Microsoft is making gains, posting a 6 point jump in the number of tech professionals using its cloud infrastructure.
Google’s Cloud Platform offerings came in behind Azure, with 8 percent of survey respondents using Google App Engine, and only 5 percent using Google’s infrastructure products.
Microsoft has put huge amount of work towards marketing Azure to large enterprises, so it’s not surprising to see that large businesses are Microsoft’s core customers. There’s also room for that business to grow: a majority of enterprise users responding to the survey said that less than 20 percent of their company’s app portfolio is in the cloud.
What do you think of Microsoft Azure? What future do you predict for it? Thank you for sharing your thoughts🙂