Live data from Hacker News

Announcing .NET Core 2.0

blogs.msdn.microsoft.com

41–50 of 145 posts

Re: Announcing .NET Core 2.0

#42

Earlier quoted context omitted.

I'm sorry, but as for now, Electron is really not the best choice for a desktop platform, and you can't declare it a standard only because some developers choose it, mostly because it's easier for them to create or port apps using a familiar stack. In the future, certain things may change - the performance might be better and resource usage might get lower (although I honestly doubt - with browsers getting more featu…

I see Electron as an example of the "Worse is Better" theme.

In what respect? Start-up time, memory and cpu, speed, lack of native controls, poor optimization, complex debugging... What's the worst for me is the fact that you know there are certain parts of the app you will never be able to optimize. It's just like having empty loops inserted in different places of your app, only because of the choice of platform. Sometimes it feels like Swing in the old days.

Re: Announcing .NET Core 2.0

#43
post #18

I wish I had a better sense of where cross-platform desktop app platforms stood these days: Electron, Java, .NET, QT. All I hear are "Eww, Electron is ridiculous, slow, heavy Web junk for desktop", "Eww Java is blub, insecure, and half-abandoned by Oracle", "Eww, .NET is Microsoft and unreliable for anything serious on non-MS OSes", "Eww, by the time you pay the license, learn QT, learn the odd variant of C++, and ma…

I wrote a cross platform JavaFX app a couple of years ago. I can't talk to .NET or Qt but I can at least discuss my experiences with that.

Firstly, there aren't any modern, serious, cross platform desktop development environments I'd describe as lightweight. That is not always a problem. If your UI needs are fairly straightforward and you want to use native widgets, then you can use Java+SWT or even AWT. It may sound ridiculous but for small utilities and such that want some buttons, tabs, menus and edits, you don't actually need a modern toolkit - and there are quite a few abstractions over native widget toolkits that work well enough if you aren't demanding.

Now what about the rest. You can see a screenshot of my app here - it's open source but I no longer distribute it:

https://media.coindesk.com/uploads/2015/01/Lighthouse-630x45...

I wrote a desktop app in Java for several reasons:

• It was a peer to peer app. Web and mobile don't really 'do' p2p networks.

• I had already written a library that was the engine of the app, in Java.

• Ignoring the P2P issue for a moment, my target market of early adopter cryptocurrency fans was split across several mobile platforms but all of them had laptops. Cross platform dev on the desktop is more mature than mobile.

• The app had a content creation component that wouldn't have worked well on small screens.

• I wanted to try new ideas in auto update technology, specifically, to enable signing keys to be held in a Trezor hardware device, and allow multi-signature auto updates. So that meant I couldn't distribute via an app store.

My experience of JavaFX was pretty good. It's the third gen UI toolkit after AWT and Swing. It's not abandoned by Oracle. It is however in maintenance mode. There is a reasonable sized team working on it but they focus mostly on bug fixes and rounding out the API these days rather than major new features.

JavaFX dates from around 2010, so it's a modern toolkit. To try and stay on topic, it's similar to .NET XAML. It has all the mod cons like a proper scene graph, support for fully reactive programming, GL/Direct3D based rendering with shader accelerated effects and so on. The design is very nice. The people who built it have done UI toolkits before and you can see their experience shining through. You can style with CSS and I found I could make a UI that looked like a Twitter Bootstrap app just by applying some CSS rules. Combined with a few simple rules (e.g. no menu bars, tree views, etc) I was able to make a UI that basically felt like a web app without actually being so. Nowadays I'd use TornadoFX which is a Kotlin framework that makes it even easier to use.

The big catch is always distribution. All desktop toolkits except Electron suck at this.

There's a tool that creates native installers for your Java app on Mac, Windows and Linux. The user won't know it's Java and doesn't need Java installed, but the resulting installers don't auto update at all. Acceptable if it's 1998 but not so much anymore. I rolled my own auto update framework as I wanted to make it high security anyway, and this wasn't hard, but it was never quite satisfying. I see that Electron uses a separate framework called Squirrel, maybe that's the way to go for Java apps too. But what I really want is an app browser.

I hit a few bugs along the way, none critical. JavaFX has spent the last few years with the team mostly focused on bug fixes and bringing features from internal APIs to the public API, and I felt it get more solid as I worked. Some glitches were platform specific but none were hard to diagnose or work around. It's no worse than any other framework.

Overall I much prefer JavaFX to the web platform. One was designed and implemented by a unified team with a unified vision. The other is a warty swampland which I'd describe as the product of evolution, except that evolution implies some kind of natural selection, which when talking about the web would be too kind. The web can do peer to peer video chat but does not have basics like a decent virtualised table or list view. JavaFX nails the basics all UI toolkits should have, but also supports things like composited h.264 and some basic 3D graphics. It can also embed WebKit if you find you need it.

My wish-list for JavaFX ends up being quite short. Integrate Squirrel for auto updates. Provide direct access to an underlying OpenGL context for more sophisticated 3D work (and let you force GL on Windows). Optimisations. Bug fixes. That's it.

Re: Announcing .NET Core 2.0

#46
post #18

I wish I had a better sense of where cross-platform desktop app platforms stood these days: Electron, Java, .NET, QT. All I hear are "Eww, Electron is ridiculous, slow, heavy Web junk for desktop", "Eww Java is blub, insecure, and half-abandoned by Oracle", "Eww, .NET is Microsoft and unreliable for anything serious on non-MS OSes", "Eww, by the time you pay the license, learn QT, learn the odd variant of C++, and ma…

I am currently working on a .NET Core/Mono integration with QML.

https://github.com/pauldotknopf/net-core-qml

The idea is to only have bindings for QML engine and it's parts, with the ability to use .NET objects (properties, signals, slots, methods) with vice-vera (using dynamic).

It is very much in the early stages, but to me, the idea seems very promising.

Re: Announcing .NET Core 2.0

#47

I'm enjoying reaping the rewards of all the dotnet core work in my F# projects. One critique: Why break semver? https://github.com/dotnet/standard/blob/master/docs/faq.md#w... Like I get that it feels like a big change (and it is), but you've gone and confused a huge population of library writers and users with the major version bump. https://github.com/search?q=netstandard2.0&type=Issues&utf8=... How many of those a…

It doesn't break sem ver. Sem ver doesn't disallow revving the major number without making a breaking change. It only says if you do a breaking change, you need to rev the major number.

Re: Announcing .NET Core 2.0

#48
post #18

I wish I had a better sense of where cross-platform desktop app platforms stood these days: Electron, Java, .NET, QT. All I hear are "Eww, Electron is ridiculous, slow, heavy Web junk for desktop", "Eww Java is blub, insecure, and half-abandoned by Oracle", "Eww, .NET is Microsoft and unreliable for anything serious on non-MS OSes", "Eww, by the time you pay the license, learn QT, learn the odd variant of C++, and ma…

I wasn't aware .NET Core 2.0 had anything to do with desktop apps?

Not at the moment, but I am looking to bridge that gap.

https://github.com/pauldotknopf/net-core-qml

The idea is to only have bindings for QML engine and it's parts, with the ability to use .NET objects (properties, signals, slots, methods) with vice-vera (using dynamic).

It is very much in the early stages, but to me, the idea seems very promising.

Re: Announcing .NET Core 2.0

#49

Does .NET Core also include a cross platform GUI toolkit? (Windows.Forms and WPF come to mind) If not, what toolkit would be recommended these days for this purpose?

I am currently working on a .NET Core/Mono integration with QML.

https://github.com/pauldotknopf/net-core-qml

The idea is to only have bindings for QML engine and it's parts, with the ability to use .NET objects (properties, signals, slots, methods) with vice-vera (using dynamic).

It is very much in the early stages, but to me, the idea seems very promising.

Re: Announcing .NET Core 2.0

#50
post #15

I have been absolutely loving .NET Core since I started using it this spring. Currently running two applications in production, one on a Windows Server with IIS and another on a Centos 6 server with Docker. Docker was surprisingly easier than configuring Web Deploy to IIS. There have been a few things that are oddly documented, but generally documentation has improved over these months as user base has grown. They ha…

Couldn’t agree more. I’ve been using .Net Core 1.1 daily for the last couple of months building out a reasonably large Web API for a game.

The platform, tools and C# as a language are a pleasure to work with on both my Mac and Windows machines (small caveat on VS for Mac, it’s still a bit lumpy)

I’ve been using Unity for about 8 years and I’m finally confident building a backend using .Net and basking in the joy of interfacing it with Unity.

When I first started using Unity many years ago, we used to say it made making games fun again. I can say .Net Core feels the same for Web/API development.

Kudos to all those who put effort into bringing 2.0 out.

Post reply on HN