News for hackers. Stuff that matters.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by mentat2737 on Wednesday November 16, 2016 @10:48AM (#12967978)
Nice.

Now please make C# a first-class citizen in Android and start to migrate from Java to C#.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by geodel on Wednesday November 16, 2016 @11:45AM (#12968730)
Google have not made their own languages Dart/Go official to Android. Why would they make languages other than Java a priority now?
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by owaislone on Wednesday November 16, 2016 @12:12PM (#12969062)
.NET would have had a real chance at being the android application platform if it was philosophically in the state that it is today (open sourced toolchain/compilers, open-source friendly MS, Mono/Xamarin in good shape).

Moving android away from Java is going to be a big undertaking and I doubt Google will undertake such a huge project only to move away from Oracle and closer to MS.

If they ever try to replace Java, it'll be Dart or another language they acquire in future. Dart has good chances.

They already have an early stage framework to make Android (and iOS) apps with Dart[0]. It's also the main GUI toolkit for their Fuchsia OS [1].

0 https://flutter.io/

1 https://github.com/fuchsia-mirror/

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by smnscu on Wednesday November 16, 2016 @02:45PM (#12970719)
Silly idea that will never happen, but imagine Google and Microsoft* working together on Android and it becoming actually open (i.e. not a tool to protect google search on mobile) and easily targetable by Java, C#, Go, etc. apps. From a technical point of view it might sound difficult until you realize modern smartphones are veritable beasts compared to computers 10 years ago, and we've had general purpose OSes for decades now. This is mostly just me shipping Google and Microsoft after their successful recent collaborations like TypeScript.

* - based on the premise that MS might be open to this after failing at mobile over and over again

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Wednesday November 16, 2016 @04:48PM (#12971900)
It's not really so silly from Microsoft's perspective. Given the sorry state of affairs with WP, and company's overall focus on Azure, it would make perfect sense to embrace a popular mobile platform, if this could be translated to more sales of Azure services.

What Google is to get out of it is a more interesting question.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by icebraining on Wednesday November 16, 2016 @04:52PM (#12971925)
I'm sure it was difficult, but you can already ship C# code using Xamarin, no need to wait for Microsoft.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by cm2187 on Thursday November 17, 2016 @01:50AM (#12974997)
Xamarin is a bit of a hack. What we really need is a cross platform solid (i.e. not javascript) language supported natively.

What would be ideal would be that Apple, Google and Microsoft sit together and agree on a common language and GUI API that would work on Android, iOS, Windows, MacOS and Linux natively.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by K0SM0S on Thursday November 17, 2016 @07:32PM (#12983246)
I've often dreamed of this, especially when it seemed all too obvious for MS to release an Android phone; then again after ubuntu/bash on Windows. But whereas it seems like a golden opportunity for MS, it would essentially be Google handing keys to a mobile realm to MS. Short of a super-deal on desktop I don't see what's in it for Google to enter such a partnership (and Bing vs Gsearch, or countless other frontal rivalries, isn't conducive to a desktop alliance, notwithstanding the predictable end/shift of desktop as a category/paradigm). Nothing beyond scope-limited projects like TS between MS and G, as I see it currently.

What's more likely these days is Google entering the desktop space (x86) by merging it with mobile (e.g. Andromeda). Pretty sure that OS could grab 30% of new laptops in a heartbeat (think: almost free for manufacturers: no Win license).

Meanwhile, I'm pretty sure Apple will do its thing (did they fix Gmail on Mail yet?) Though I think Swift, if it were in "the state of C#/.NET" as worded above, would eventually become a great candidate for a high level common language. Somehow I don't think Apple is trying, their open-sourcing seems to end at "reassurance" (stacks can't die if you can maintain the packages, b/c oss, yay).

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by vintagedave on Thursday November 17, 2016 @12:19PM (#12979342)
C++? https://www.embarcadero.com/products/cbuilder

Or for something more like C#, Delphi? https://www.embarcadero.com/products/delphi

Both these platforms, which include a cross-platform UI library including native controls, are Windows, iOS, Android, macOS, and Linux in the next release.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by cm2187 on Thursday November 17, 2016 @01:12PM (#12979844)
The thing with C++ is that it's a hard language. I understand the power for low level stuff, and it is available already. But for 99% of apps, a higher level language like java or c# is really what we need.

Even C# is starting to show its age. Perhaps it's the occasion to reboot it. Start from scratch based on modern concepts with a truly cross-platform language.

With support from Microsoft + Google + Apple, and cross platform across Windows, MacOS, Linux, iOS and Android, adoption would go to 100% (or 11!) on month 1.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by uncletaco on Thursday November 17, 2016 @08:44AM (#12977315)
A pipe dream for me would be if that common language were a lisp.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by cm2187 on Thursday November 17, 2016 @09:45AM (#12977830)
I think it should be BrainFuck rather
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by fsiefken on Thursday November 17, 2016 @07:47PM (#12983324)
What's wrong with Vue.js/TypeScript/ES6/Weex(native) or React/TypeScript/ES6/Native? It's no C#, but it's modern, performant, crossplatform and can be OS themed.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by cm2187 on Friday November 18, 2016 @05:37AM (#12985780)
I'm only familiar with TypeScript. It is adding types to javascript, which is welcomed. But that doesn't make up for a lot of the uglyness of the language. Javascript was never meant to be anything else than a way to open porn popups ads and it shows.

But even C# is starting to show its age and would deserved a reboot. If we agree on a truly cross platform language, we might as well make it modern and simple, with great tooling. That does mean breaking backward compatibility with older languages but the benefits of having a common language way offset the cost of retraining developers.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by flukus on Thursday November 17, 2016 @01:45AM (#12974980)
Imagine google buying MS. They seem more complimentary than competitive these days.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by gbersac on Thursday November 17, 2016 @04:59AM (#12976031)
They are both around 500 billion of valuation. Impossible.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by EpicEng on Thursday November 17, 2016 @11:13AM (#12978687)
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by mentat2737 on Thursday November 17, 2016 @02:40AM (#12975252)
Also, a few years ago Xamarin actually ported Android (then 2.2. IIRC) to Mono/C#, as a test for Java->C# converters, and the result was faster than Android/Java.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by patates on Wednesday November 16, 2016 @12:05PM (#12968969)
Dart doesn't have the adoption yet and has a different plan when it comes to mobile ( https://github.com/flutter/flutter ).

I love Go, but it's not really a suitable language to do UI, or anything that deals with data models.

C#, however, is a perfect replacement for Java, most of the times. I would say "it's simply superior in every imaginable metric other than cross-platform implementations of the compiler/VM" but that's just my opinion.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by bitmapbrother on Wednesday November 16, 2016 @01:34PM (#12969908)
Dart is a first class citizen in their Fuchsia OS. I wouldn't be surprised to see Fuchsia replace Linux one day on Android/Andromeda.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by pjmlp on Friday November 18, 2016 @12:26PM (#12988348)
I might be proven wrong, but I doubt it is going anywhere.

After Google own teams decided to go Typescript, the Dart team seems to keep searching for reasons to keep the project alive.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by mr_overalls on Wednesday November 16, 2016 @01:10PM (#12969641)
I always hear of the JVM's legendary capabilities, the result of so many million engineer-hours baked in. What would be required to bring the CLR into parity with it?
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by fetbaffe on Wednesday November 16, 2016 @01:42PM (#12969987)
I don't know, but remember that Android does not run the JVM, it runs the now deprecated Dalvik or the more modern ART, both Google in house projects.

None of them have all those million engineer hours baked in, not even close.

My guess is that the CLR have more man hours spent on than both those two implementations combined.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by sandGorgon on Wednesday November 16, 2016 @11:49PM (#12974395)
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by needusername on Thursday November 17, 2016 @01:40AM (#12974959)
It is my understanding Android simply uses the class library of OpenJDK. Android will continue to used the ART VM instead of the HotSpot VM.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by sandGorgon on Thursday November 17, 2016 @02:20AM (#12975149)
True, but I personally believe this is the first step to adoption. The whole issue was around licensing..not because the Hotspot vm had something fundamentally missing (zygote and MVM notwithstanding)
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by needusername on Thursday November 17, 2016 @11:54AM (#12979082)
That's hard to know and I have no insider knowledge.

From the outside it seems like a lot of work. Firstly HotStop is not optimized for fast startup, small footprint or short GC pauses. There is talk about merging the Java ME VMs but such things usually take years. Secondly Google built many proprietary extensions, eg DEX. I'm not sure that ART can even execute Java bytecodes.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by PeCaN on Wednesday November 16, 2016 @06:59PM (#12972859)
Generally when referring to the JVM's performance people are talking about IBM J9, Azul Zing, HotSpot, etc, while Android has its own VM.

Additionally, most high-performance JVMs are optimized for long-running server applications, wile the CLR is optimized more for desktop applications (considerably better startup time, is fast without requiring lots of warmup, but doesn't do some of the very advanced optimizations JVMs tend to do). I suspect it would be easier to make the CLR performant on mobile than to make a JVM fast with constrained memory.

So basically, the CLR is probably already competitive on mobile devices. Does anyone know if Windows Phone uses a stock CLR or if they reimplemented it? Seems pretty snappy.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by zigzigzag on Thursday November 17, 2016 @04:16AM (#12975788)
HotSpot at least doesn't have terrible startup time. 50msec for Hello World and about 500msec to get a JavaFX window on the screen with a button in it.

The .NET CLR isn't really "fast without requiring lots of warmup". It's a much simpler design that out of the box simply compiles each method the first time it's used. It doesn't "warm up" because it doesn't do profile guided or speculative optimisations at all. The weakness of the CLR is one reason C# pushes more optimisation complexity onto the developer e.g. having to mark virtual methods explicitly instead of methods being virtual by default. With respect to memory usage I guess it's not much different.

There are JVMs designed for old candybar feature phones (J2ME etc). The issue is not "can you make a mobile JVM" as the answer is clearly yes for any type of phone, even very old ones. The issue is "how much fancy technology can you fit in that space".

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by naasking on Thursday November 17, 2016 @10:15AM (#12978095)
> With respect to memory usage I guess it's not much different.

Memory use is quite different due to reified generics and value types.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by PeCaN on Thursday November 17, 2016 @12:09PM (#12979239)
Oh, I'm not saying JVMs can't work on tiny devices (heck, there are JVMs on everything from 2005 feature phones to Intel ME to some random tiny SuperH chip in a car), just that a high-performance JVM has so far not been designed for that particular use case.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by pjmlp on Thursday November 17, 2016 @03:49PM (#12981404)
Windows Phone doesn't use the CLR at all.

.NET is AOT compiled to native code using the same backend (C2) as Visual C++.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Kipters on Wednesday November 16, 2016 @07:14PM (#12972950)
CoreCLR, the same used in .NET Core
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by wesamco on Wednesday November 16, 2016 @02:47PM (#12970748)
it's happening: CoreRT[0], a .NET Core runtime optimized for AOT (ahead of time compilation) scenarios, with the accompanying .NET Native compiler toolchain. will enable you to compile for any OS/any platform including ARM. compile for every platform, run the AOT compiled Tree-shaken Machine code executable.

[0] https://github.com/dotnet/corert

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by dom96 on Wednesday November 16, 2016 @12:14PM (#12969092)
Why do you consider Go unsuitable for UI development?
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by patates on Wednesday November 16, 2016 @01:15PM (#12969708)
You can't have generic functions that can wrap data so you end up passing concrete models or interfaces to views - no generic view-models for you. The inflexibility of the type system isn't a big deal when you are working on network applications or tools, but causes serious duplication when you do anything that passes around concepts internally.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by bsaul on Thursday November 17, 2016 @04:12AM (#12975759)
i don't think generic is relevant to GUI. objective c didn't have generics, and i don't think it mattered in any way when they built cocoa.

now generics is a problem of its own when working with data and algorithms, but they managed to get along with it in the backend so far, so...

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by dagi3d on Thursday November 17, 2016 @06:37AM (#12976494)
obviously it is doable, but that does not mean there aren't better solutions today.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by dguaraglia on Wednesday November 16, 2016 @04:28PM (#12971731)
UI development is one of the areas where object orientation really helps encapsulate the code in smaller chunks that are easy to map mentally to the graphical representation. I'm not sure Go's interfaces are as powerful of an abstraction.

Mind you, there might be an opportunity there for developing a different kind of UI paradigm where interface elements don't map to objects and actions are the main driver of screen updates. Anyone has any ideas of such a paradigm?

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by mywittyname on Wednesday November 16, 2016 @05:22PM (#12972154)
> UI development is one of the areas where object orientation really helps encapsulate the code in smaller chunks that are easy to map mentally to the graphical representation. I'm not sure Go's interfaces are as powerful of an abstraction.

See, I feel the opposite. I think UI programming is the worst application of OO-design because the data and actions of a UI are inherently decoupled.

You have have n data structures and m events that can be fired on a page and not every event is associated with every data structure. However, importantly, any event can be associated with any number of data structures, some of which may not even be conceived at the time of run/execution. OOP-doesn't work well in situations where you have functions that can operate on lots of disparate data-types.

When you apply OO principals to UI work, you end forcing a coupling that artificially limits what you can do with the data, requiring an increasing the levels of abstraction in order to provide baseline functionality. For example, when you have a button, it's an object, then if you want to apply a listener to it, you need to create a method on Button that accepts a listener. But to ensure that the method can actually interact with the passed object, you need to create an interface then ensure that every potential listener implements it. There is an entire world of classes that could be bound to the listener as-is, but those existing classes don't implement the correct interface since they didn't know of its existence. So the OOP-land solution is to write wrappers for every class you'd like to attach as a listener to the button.

In a functional world, you can attach any function that takes the appropriate number of arguments and be on your merry way. If the function doesn't fit that mold for whatever reason, you can cleanly wrap it in an anonymous function right where you're attaching it as a listener.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by millstone on Wednesday November 16, 2016 @06:41PM (#12972720)
I don't like UI frameworks that work the way you describe either! I think this is mainly C++-legacy living on in Java and .NET, where they pay a penalty for being static. OO UI frameworks in dynamic languages can be structured very differently.

In Cocoa, you don't have these silly class-specific interfaces ("ButtonClickListener" or whatever). Instead it uses target/action: you give the button an object, and the method name to call on the object. So it does allow you to bind any member of that "world of classes" as-is.

Next, you allow the target to be dynamically determined. For example, say you have a button representing the Copy to Clipboard. You can set its target object to a sentinel representing the keyboard focus. And the button can even use reflection, and disable itself if the focus doesn't support Copy.

In a functional world, functions are opaque: the only thing you can ultimately do with a function is call it. But in an OO world, functions are closer to objects: they have names, they can be inspected, they can be dynamically dispatched. This is part of what makes OO languages excel at UIs.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by unscaled on Wednesday November 16, 2016 @06:26PM (#12972609)
The functional programming approach to UI has more advantages than that. In my opinion, its greatest boon is that it allows you to cleanly separate UI logic, UI state and the actual data models, and reason about them in a straightforward way.

For instance, let's say you have a very simple Resize Image dialog, with two fields for desired height and width and a toggle button for keeping the current aspect ratio. Your data model is just (height : int, width : int), but you also have a UI state (keepAspect : bool). Changing the state could affect the actual data model, but it's not part of the final data you get out of the dialog.

In the traditional OOP paradigm, you'll just have to mix data and state, and once the UI gets more complex, you'll often end up with convoluted and bug-prone UpdateWidgets() methods being called after every user action or external data model update, and this function will both read and update the data model, the UI state and the UI view parameters. With the FP paradigm, you can just cleanly implement one function which receives the data model and state and creates the UI View, another function that enforces constraints on the data model and state and a few event handlers for specific user actions. This is essentially what you get nowadays with the more well-conceived workflows in ReactJS.

But while I really like this style of programming, I don't see how you can apply it to go. If there is one thing Go is worse at than OOP, that's FP. Go has no concept of pattern matching or currying, almost no inference, a cumbersome closure syntax and a pathetically weak type system without generics. Yeah, I know, JavaScript also falls short on most of the items in that list, but being dynamically-typed you can still easily write higher-order functions like map, filter, reduce and compose. Try to do that in Go without using reflection.

The Go authors and community seem to favor explicit for loops to functional constructs or comprehensions, and a little bit of copy-paste to function composition. That's OK, since Go's #1 goal is to be 'simple' in the sense that the code you see describes the imperative execution flow as accurately as possible, with very little magic happening behind the scenes. As far as UI design goes though, Go is probably even worse than C in some respects, since it doesn't even have these fancy macros that helped us brave UI programming back in the day. ;)

C# on the other hand, offers not only better-Java-than-Java OOP, but also an array of surprisingly competent functional features which keeps increasing with every language version. It had proper generics and closures since version 2.0 and covariance/contravariance and lambda syntax since version 4.0, expression bodies since version 6.0, pattern matching and tuples since version 7.0 and it will hopefully have proper record types and discriminated unions by version 8.0.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by bsaul on Thursday November 17, 2016 @04:08AM (#12975736)
well, objects are great for mutable state encapsulation. a view , a scrollbar, a listview, etc are all highly mutable ( 60 times a second) and you can very well organize all of them in a 2 or 3 level hierarchy of inheriting classes ( a listview is a kind of view).

but, you may probably as well organize them as nested property sets each of which containing the other ( like a listview contains a view part and a list part). Not sure the result will be as elegant, but i'm curious to look at the result.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by PeCaN on Wednesday November 16, 2016 @06:48PM (#12972777)
Go is unsuitable for programming, and UI development typically involves some programming.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by geodel on Wednesday November 16, 2016 @12:11PM (#12969051)
Java's value is not some inherent superiority of language for mobile development, it is about throwing (100s of) millions of dollars and 100s of engineers to make it work. And I think it remains true for C# also. Unless someone sinks 100s of millions on C# too it seems non-starter to me. By the way Microsoft has already tried mobile ecosystem with .net/C# that did not work out very well.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by cwbrandsma on Wednesday November 16, 2016 @12:16PM (#12969107)
I wouldn't say that was because of .net/C#. Nor did the iPhone succeed because of ObjectiveC or Android because of Java.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by serge2k on Wednesday November 16, 2016 @12:28PM (#12969231)
The transition from Java to C# is pretty easy and pleasant as C# is similar but better.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by bottled_poe on Wednesday November 16, 2016 @10:00PM (#12973870)
> C# is similar but better

Oh really? Why?

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by naasking on Thursday November 17, 2016 @10:19AM (#12978147)
Better operators, properties, lambdas, a standard library that exploits lambdas pervasively, type inference, simple generators and async/await.

Java has anonymous classes and static interface members as the only real advantages over C#.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by invalidname on Thursday November 17, 2016 @02:28PM (#12980606)
I work a lot with Java and C# and you just described the reasons I prefer Java (which FYI has lambdas today).

The async/await API's and their rigid nature was torture and the language was overly loose as if users asked for everything and got it... The reason I left C++ for Java 20 years ago is the things it removed and discarded (e.g. operator overloading) C# to me is a step back in the direction of "everything but the kitchen sink".

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by naasking on Thursday November 17, 2016 @05:32PM (#12982371)
> The async/await API's and their rigid nature was torture

Way better than callback hell. The only awkwardness surrounds streams of tasks.

Operator overloading is a necessity. Matrices, big integers and so on, all require the familiar operators for clear code. Type inference is here to stay, and every new language has it. The fact that every language is also trying to adopt a streaming API like LINQ should also tell you something.

I'm afraid you're on the losing side of history on all of these points. C# does include a lot, and I would certainly prefer a single uniform abstraction to handle many things, ie. generators and async/await can be unified under coroutines or something similar, but the proliferation of "kitchen sink" features is not nearly as bad as you imply.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Nullabillity on Wednesday November 16, 2016 @01:40PM (#12969966)
Just go use Kotlin instead. Much nicer than C#, runs on any JVM.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by m_fayer on Wednesday November 16, 2016 @04:13PM (#12971580)
In some ways it's nicely ahead of C#, but it's still missing some extremely desirable language features, namely async/await/yield.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by jmfayard on Wednesday November 16, 2016 @11:48PM (#12974393)
kotlin 1.1 will have coroutines which cover generators/yield async/await stack-less continuations

https://github.com/Kotlin/kotlin-coroutines/blob/master/kotl...

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by runT1ME on Wednesday November 16, 2016 @07:00PM (#12972869)
Kotlin is missing monadic comprehension I'd say it's less powerful than C#.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by xorxornop on Wednesday November 16, 2016 @03:31PM (#12971181)
Much nicer? You mean "at parity"
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by zigzigzag on Thursday November 17, 2016 @04:20AM (#12975812)
The syntax is a lot lighter and more modern than C#
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by eva1984 on Wednesday November 16, 2016 @04:24PM (#12971693)
Nothing can replace Java for android, unless it can also replace all the libraries current Android application is replying, which is the reason why I believe Google isn't going to switch off Java anytime soon.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by jmfayard on Thursday November 17, 2016 @12:02AM (#12974482)
Using kotlin you get a much nicer language right now without any need of Google to switch off its Java API

I doubt it will be officially acknowledged by Google, but hey they never acknowledge third party good things, and the official Android developers docs still tech us to do networking with HttpUrlConnection and threading with asynctask, we moved on to okhttp and retrofit and rxjava anyway

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Wednesday November 16, 2016 @04:54PM (#12971934)
Xamarin already provides what is, in effect, a .NET compatibility layer on top of Android/Java.

There's no reason why it can't be reversed, with Xamarin (or something along these lines) becoming the new native high-level API, and Java being a compat layer on top of that.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by RivieraKid on Wednesday November 16, 2016 @04:42PM (#12971853)
> I would say "it's simply superior in every imaginable metric other than cross-platform implementations of the compiler/VM" but that's just my opinion.

Not by a big margin. Java 8 has lambda functions, which used to be the most painful aspect of the language for me.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Wednesday November 16, 2016 @04:52PM (#12971926)
It does them. But it repeats the story with generics, where back-compat (in this case, lack of reified generics) requires hacks for acceptable performance.

For example, in Java, you have this: http://docs.oracle.com/javase/8/docs/api/?java/util/function...

Note all the permutations. This is necessary, because there's no way to define a generic interface that would have acceptable perf, due to boxing. So you end up defining separate types for things like int->int, int->int->int, long->long etc. And then if you need e.g. bool->int, well, that's just too bad.

Whereas in C#, you just have Func<...> and Action<...>, and they work with all permutations of all primitive and user-defined types.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by kuschku on Thursday November 17, 2016 @12:54PM (#12979697)
> This is necessary, because there's no way to define a generic interface that would have acceptable perf, due to boxing.

Actually, that's going away with Java 9 (or 10). Luckily.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Friday November 18, 2016 @09:12PM (#12991624)
This is great to hear, but it also kinda reinforces the point - .NET generics were reified from the get go, back when they were introduced in 2005. Java got generics a few months earlier than .NET, if I remember correctly; but we're still waiting for them to fully catch up. By the time it does, people coming from C# will be asking about things like sequence comprehensions (well, they already do, since those have been around for 8 years) and pattern matching...
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by RivieraKid on Wednesday November 16, 2016 @05:13PM (#12972075)
That doesn't affect me in any way though, from my POV, lambdas work.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Wednesday November 16, 2016 @08:02PM (#12973226)
It will affect you as soon as you start writing methods that accept lambdas as arguments.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by jahnu on Wednesday November 16, 2016 @11:46AM (#12968755)
* C# is much more mature

* It has an enormous user base

* It's not owned by Oracle

Not saying they will but those are real possible reasons for Google to do this.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Nullabillity on Wednesday November 16, 2016 @01:41PM (#12969986)
> * It's not owned by Oracle

So you replace one lawsuit-happy DB company with... another lawsuit-happy DB company.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by KirinDave on Wednesday November 16, 2016 @01:55PM (#12970129)
It's worth noting that Microsoft is aggressively pledging about patents, open sourcing with very clear and explicit licenses, and making industry-level promises that imply they're serious about making .NET Core an open and usable platform.

It would be nicer if there was a managed langauge platform that was not tied to an entity with a history of patent litigation, but let's not lose our sense of scale here. The degree to which Oracle has betrayed our community and tried to undermine the bearable status quo of the software industry to milk the Android ecosystem is as unforgivable as anything Microsoft has done in the darkest depths of the Balmer era.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by john_reel on Wednesday November 16, 2016 @02:54PM (#12970821)
Google uses OpenJDK now. Nothing to worry about.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by JacobiX on Thursday November 17, 2016 @03:50AM (#12975623)
OpenJDK remains an Oracle project and all contributors should sign the Oracle Contributor Agreement (OCA). Although, an agreement of this nature exists in some other open source communities. But I feel, hesitant to grant Oracle the following rights : - License any patents bearing on your contributions to Oracle. - Assert that you are legally entitled to grant Oracle these rights. - Oracle have full copyright ownership of all the code in that project.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by zigzigzag on Thursday November 17, 2016 @04:21AM (#12975819)
But all sorts of projects have such requirements, any open source project by Google does. That isn't unique or special to Oracle.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by topbanana on Wednesday November 16, 2016 @02:47PM (#12970751)
The point of the .Net foundation is that it isn't owned by Microsoft.

I'm not convinced Microsoft is as lawsuit-happy as Oracle.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by dx034 on Thursday November 17, 2016 @04:12AM (#12975760)
Currently not, but that can change with the next CEO.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by topbanana on Thursday November 17, 2016 @09:59AM (#12977938)
It's a moot point anyway
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by FT_intern on Wednesday November 16, 2016 @02:10PM (#12970310)
And Google directly competes with MSFT on many more verticals
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by geodel on Wednesday November 16, 2016 @12:06PM (#12968988)
One possible way out will be something like Swift port to Android made by an open source contributor to Swift. Someone with deep knowledge of C# can take a stab at C# to Android. I'd think Google have very few C# people internally.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by problems on Wednesday November 16, 2016 @12:20PM (#12969151)
There already exists C# for Android, it recently became free too when Microsoft bought up Xamarin (the company formerly maintain Mono and the Xamarin Android and iOS wrappers). Microsoft is really pushing .NET Core and the open .NET platform, really an awesome move for developers.

What the parent wanted was official support from Google for Xamarin's Android API wrapper or a complete rewrite of core parts of the OS in .NET instead of Java. It seems fairly unlikely because of all the effort Google has invested in their Java VM and JIT/AOT compilers, but maybe that'll change.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by geodel on Wednesday November 16, 2016 @01:22PM (#12969775)
I agree with most of it. But I personally think .net/C# simply to not bring enough advances over Java to even think of changing core parts. Most advantages that get mentioned are app developer conveniences.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by dizzy3gg on Wednesday November 16, 2016 @12:40PM (#12969335)
They have Jon Skeet, this is enough, at least to attract more c# developers.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by jpalomaki on Wednesday November 16, 2016 @02:00PM (#12970190)
Google did have certain disputes over Java with Oracle. That could be one factor.

Maybe Google could decide that putting resources on Dalvik and related tool development does not make sense.

Maybe they would like to see one language to cover both the client and cloud development.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by 0xdeadbeefbabe on Wednesday November 16, 2016 @12:24PM (#12969202)
> Why would they make languages other than Java a priority now?

Because mentat asked please.

In other words, it might have less to do with the merit of the language than with the politics of the organization.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by fbreduc on Wednesday November 16, 2016 @07:15PM (#12972955)
google is not good at making and fostering languages, C# and .net is much better bet
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by crb on Wednesday November 16, 2016 @02:58PM (#12970877)
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by jeremy_wiebe on Wednesday November 16, 2016 @03:35PM (#12971228)
I don't think that's a relevant distinction. The article you linked to references both and uses wording like this ( mine):

In this spirit of enabling developers and their organizations, Google is pleased to be joining the Technical Steering Group of the .NET Foundation. .NET is a key component in the modern enterprise, and the Google Cloud Platform (GCP) team has worked hard to ensure that .NET has first-class support on Google’s infrastructure, including excellent infrastructure for Windows.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by praveenster on Wednesday November 16, 2016 @11:03AM (#12968200)
In addition to that it might be a good idea to make Swift a first-class citizen too. This would give developers a good chance to use similar concepts on both iOS and Android.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by shaydoc on Wednesday November 16, 2016 @11:11AM (#12968316)
just make C# a first class citizen on iOS also :)
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by cryptarch on Wednesday November 16, 2016 @11:53AM (#12968844)
Please just make C-ABI's first-class citizens (especially on the GUI front), then all other languages can bind to that.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Wednesday November 16, 2016 @08:06PM (#12973246)
C ABI is very limiting, though, and it's a pain to implement.

What's really needed is some standard higher-level ABI (that does things like classes in a sane way), but which is made out of the existing C ABI building blocks in a manner that allows any existing language with C FFI use it. We can then add a new FFI layer that maps higher-level concepts better, but everyone can still play regardless.

This is exactly what COM was, and what its current evolution, WinRT, is. Any language that can do C structs and function pointers can ultimately do COM/WinRT, but it establishes things like lifetime semantics (refcounting), runtime metadata API, standardized futures etc on top of that. Then languages take that and map it to things that make sense there.

But it needs to be a shared public spec, preferably standardized.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by cryptarch on Friday November 18, 2016 @08:53PM (#12991553)
... so, a C-ABI + per-language wrappers, or perhaps a high-quality cross-platform, multi-language wrapper generator? That effectively accomplishes what you're describing in your second paragraph.

Either way, it'd be great if one could implement efficient GUI's (and full apps more generally) on Android in C/C++/Go/Rust without having to generate JVM bytecode on the fly (or like Xamarin does: at compile time).

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Friday November 18, 2016 @09:10PM (#12991612)
A language wrapper generator is about right, although for some languages it makes more sense to wrap things dynamically rather than generate code. .NET does it for WinRT, for example.

The problem with conventional C ABI is that it's just too low-level to produce good wrappers. I mean, all you have are global functions, structs, and data and function pointers. There isn't even a standard string type! (you can say char*, but there's the need to deal with lifetime issues - who deallocates what).

So in practice you need the C ABI, plus all those conventions, like how an "object" looks (i.e. how you do things like method dispatch or type queries), how a callback looks, how strings work etc. And all those conventions are expressed in terms of that basic C ABI - but they also have to be standardized, and they become ABI of their own, like COM and WinRT.

And you also need a convention/standard for metadata, for those wrappers to consume, and for any sort of runtime magic like property bindings - like typelibs for COM and metadata assemblies for WinRT.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by saosebastiao on Wednesday November 16, 2016 @01:33PM (#12969891)
This is the only approach that works across a wide variety of languages, and yet I can't help but think that would be a terribly bad idea in terms of user experience. Because you would end up with major apps written in Ruby or Python, draining batteries and stealing all your RAM.

Not that we aren't already headed there with a ton of app frameworks embracing javascript.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by jimmaswell on Wednesday November 16, 2016 @01:48PM (#12970059)
Apps written in python would still take less battery than an equivalent JS webapp
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by zigzigzag on Thursday November 17, 2016 @04:24AM (#12975827)
ART/Dalvik don't implement it, but Java ways for many languages to interop with each other for a long time already and is pushing the limits on that even further. The C calling convention as the lowest common denominator for language interop has been fading away for some time now already. Targeting the Java ABIs/calling conventions gives you access to both C libraries via things like JNI/JNA and also Python, JavaScript, Scala, Haskell (Frege), etc.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by on_and_off on Wednesday November 16, 2016 @02:16PM (#12970394)
Why ? what does it bring that Kotlin cannot ?

I like C# but making a language a first-class citizen of a platform is an huge task. And we can already use kotlin without re-engineering the whole stack.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by treehau5 on Wednesday November 16, 2016 @10:50AM (#12968016)
No thanks. I like Java, and esp Java 8 just fine.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by jaegerpicker on Wednesday November 16, 2016 @11:36AM (#12968615)
Not attacking you opinion at all but I'm a little shocked that someone would have this opinion, I work at a Java shop (using java 8 but I'm mostly now on the node.js side). Java 8 really doesn't have any features that are better than C#'s. Java 8 is missing some pretty major ones, like type inference, automatic getters/setters, LINQ, function passing support that's not brain dead, and a number of of things that make dev life SO much better.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Pxtl on Wednesday November 16, 2016 @01:53PM (#12970101)
While I prefer C#'s delegates/lambdas, there has been an occasional time I've wished for the ability to construct a full instanced object in that case - Java's anonymous inner classes are brilliant at this.

Likewise Java's OOP enums (basically singletons) are something I miss too.

That's a few small features I notice missing when I switch to C#.

Plus, in general I find there's a difference in style. C# libraries tend to be more pragmatic, following on Microsoft's heavy use of reflection and stringly-typed stuff. Not much OOP navel-gazing.

Java, on the other hand, celebrates OOP to a ludicrous extreme.

Also on the community, C# has been working very hard to develop the kind of bazaar that Java has, but they're coming from far behind on that front - far more C# developers restrict them to the first-party tools compared to the Java ones.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by john_reel on Wednesday November 16, 2016 @03:07PM (#12970957)
Maven, Ant, and Gradle are also in a class of their own. They help making building Java apps universally extremely easy. C# has an annoying amount of complexity in this area, with a lot of things being built into Visual Studio, and therefore Windows only. “Visual Studio” isn’t a fun build system if you’re not on Windows. And compiling people’s libraries from random repositories over github, bitbucket, etc., only to find that it won’t compile because it relies on some old version of a library that you can’t find online and the newer versions aren’t compatible.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by flukus on Thursday November 17, 2016 @01:53AM (#12975018)
Nuget solves the dependency issue. MSBuild has switching from part of the framework to VS to framework to open source. On other platforms there was always csc to compile programs (which is dramatically faster), something missing from the new dotnetcore.

There was also nant and a number of build tools, plus good old make.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Pxtl on Thursday November 17, 2016 @08:34AM (#12977246)
Ms is working on this, but it's been slowed by politics. There was an alternative msbuild file called json.project that was happening, but it's since been deprecated in favour of strippinh down the old . csproj format to its bare minimum and cleaning it up for sanity.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Kipters on Wednesday November 16, 2016 @07:20PM (#12972980)
They also open sourced MSBuild
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Wednesday November 16, 2016 @05:01PM (#12971981)
> Likewise Java's OOP enums (basically singletons) are something I miss too.

C# guys are working on adding full-fledged pattern matching to the language:

https://github.com/dotnet/roslyn/blob/features/patterns/docs...

and there's a concurrent proposal for ADTs:

https://github.com/dotnet/roslyn/issues/6739

Given the velocity of adding new features in C# these days, these will come sooner rather than later (indeed, some basic pattern matching is already in C# 7).

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by strmpnk on Wednesday November 16, 2016 @02:17PM (#12970406)
You might like F#'s object expressions for the cases where a lambda won't do.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by aembleton on Wednesday November 16, 2016 @11:44AM (#12968726)
I agree which is why I've moved my Android development to Kotlin. It provides a lot of that and works right now on Android
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by jaegerpicker on Wednesday November 16, 2016 @11:53AM (#12968846)
We are doing the exact same thing for our Android development. Kotlin for Android and Swift for iOS.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by mahyarm on Wednesday November 16, 2016 @01:42PM (#12969990)
TBH c# is not enough of an advantage to do a huge migration to the language from java. Something like kotlin (still jvm) or swift (no gc) makes a lot more sense.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by monksy on Wednesday November 16, 2016 @12:59PM (#12969545)
Which is why you would use Scala or Groovy.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by jaegerpicker on Wednesday November 16, 2016 @01:39PM (#12969959)
Or Kotlin but that's not his argument. He's arguing for Java 8. I don't agree that Java 8 is really an acceptable modern language for development. IMO it's painful and god awful slow develop in compared to a host of better languages (Swift, Scala, Groovy, and C# all included but not limited to).
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by vorg on Saturday November 19, 2016 @12:17AM (#12992205)
> develop in compared to a host of better languages (Swift, Scala, Groovy, and C# all included

Swift, Scala, and C# are statically-typed languages, like Java, whereas Apache Groovy is dynamically-typed originally -- though static typing was added in Groovy 2, virtually no-one uses it. Dynamically typed languages like Groovy are good for glue code, build scripts, and testing, not for developing actual systems.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by thaw13579 on Wednesday November 16, 2016 @01:58PM (#12970156)
The ecosystem is an important factor too. I'm excited to use C# in new projects, but I can't move away from Java without replacements for all of the libraries of external code that I use.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by olavgg on Wednesday November 16, 2016 @11:17AM (#12968389)
I also think Java is fine. Compared to C#, I find Java code easier to read as there is less magic. I also use Groovy for some corner cases like for example JDBC stuff or metaprogramming. I'm also a big fan of Maven and the development tools for Java, and most importantly the eco-system with rich libraries and frameworks. Is there an alternative for JRebel or Spring-loaded for C# yet?
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by mattmanser on Wednesday November 16, 2016 @11:21AM (#12968443)
What magic are you talking about? Various .Net frameworks have silly amounts of magic, but C# itself?
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by blauditore on Wednesday November 16, 2016 @11:41AM (#12968683)
When I started going into C# from Java a bit, there were two things slightly annoying me:

- Class extensions: I saw code examples online that just wouldn't work for me because the compiler told me a certain method of a built-in class wouldn't exist. After I while I found out that the author of that snippet had used class extensions and not bothered to mention.

- The var keyword: While this is sometimes nice for quick scripting or hacking in the debugger console, it opens the door for hard-to-read code.

Those are not necessarily "magic", but potential obscurities that can't happen in Java, simply because Java lacks these features.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by gregmac on Wednesday November 16, 2016 @12:47PM (#12969411)
> The var keyword: While this is sometimes nice for quick scripting or hacking in the debugger console, it opens the door for hard-to-read code.

I find type inference to be the opposite, generally, because it encourages good naming, and it reduces noise/boilerplate. It also makes writing and refactoring faster (don't have to think about the return types, just the code flow).

The only situation I can even think of where it is a problem is when you are passing something to an overloaded method. For example:

    void DoSomething(MySpecialType value);
    void DoSomething(string value);

    ////

    var result = GetData();
    DoSomething(result);
  
You can't tell which one is going to be called by just looking at that code. However:

* GetData() is probably badly named in this situation

* If DoSomething() does something very different depending on the type passed, it should have different names, not be overloaded

On top of that, this code can also have the same problem without type inference:

    DoSomething(GetData())
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by blauditore on Wednesday November 16, 2016 @01:55PM (#12970135)
> It also makes writing and refactoring faster (don't have to think about the return types, just the code flow).

I see what you mean, but isn't this one of the advantages of explicitly declaring types? If you refactor a method to return a different (incompatible) type, you'll have to touch all affected code parts, possibly revealing uninteded consequences of the change.

Also, I think remembering that autocompletion in VS had some trouble with correct type inference in some cases. But it's been a couple of years, maybe things are different now.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by mattmanser on Wednesday November 16, 2016 @07:19PM (#12972976)
If you change the return type of a method without using var you would still have the exact same problems. That's not an actual problem.

I've used var since it came out years ago and never had this autocompletion problem you talk about.

You sometimes had to explicitly declare a type in foreach loops, but that had more to do with shitty legacy APIs that used abstract classes as return types. Wasn't really var's fault though.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by blauditore on Thursday November 17, 2016 @03:34AM (#12975557)
Consider the following scenario:

You have a Toilet object with a method flush.

  var toilet = house.getToilet();
  toilet.flush();
Now you find out that updating Toilet objects is somehow expensive and decide to wrap it into a Cache<Toilet>. Unfortunately, Cache also has a flush method, so there will be no compile time error, but functionality is broken now.

I agree this problem would also occur when using chained calls (house.getToiled().flush()), but explicit types could cover at least some of the cases.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by naasking on Thursday November 17, 2016 @10:26AM (#12978219)
> Now you find out that updating Toilet objects is somehow expensive and decide to wrap it into a Cache<Toilet>. Unfortunately, Cache also has a flush method, so there will be no compile time error, but functionality is broken now.

This has happened to me exactly 0 times since type inference was introduced in 2007/2008.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by msbarnett on Wednesday November 16, 2016 @02:27PM (#12970520)
> If you refactor a method to return a different (incompatible) type, you'll have to touch all affected code parts, possibly revealing uninteded consequences of the change.

If you can refactor your code such that you change the return type of a method such that it returns an object of a different type, which nonetheless implements all of the methods used by clients of your type that accept and return types which in turn accept and return types that line up with the expectations of their clients, etc, etc, without having to look at or touch any of those clients, and end up with something that happily compiles but gives an unexpected result, you need to have a long and hard look at how you're using the language's type system, and why it isn't encoding your assumptions in a sane way.

Your code shouldn't be compatible with a different type unless it makes sense for your code to be compatible with that type. That's what the type system is for.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by blauditore on Thursday November 17, 2016 @03:40AM (#12975580)
One single common method is enough if that's the only one used in said context.

Sure, different types shouldn't use the same method name for different functionality, but it happens. And when such a scenario happens, I imagine it will be quite nasty to debug.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by mattmanser on Wednesday November 16, 2016 @12:47PM (#12969412)
The var syntax definitely doesn't lead to hard to read code. It's one of those assumptions people who haven't actually used it make.

99% of the time it's completely obvious what the variable is because you can just look at the right side of the equal sign.

Also, you can just hover over it.

As for the extension methods, they pretty much fixed that in VS 2015, it will now tell you which using statement you need to include.

Extension methods are a good solution to a specific problem.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by m_fayer on Wednesday November 16, 2016 @01:41PM (#12969985)
Do you really think something like this:

Dictionary<string, Tuple<int, List<string>>> foo = new Dictionary<string, Tuple<int, List<string>>>();

Is prefferable to:

var foo = new Dictionary<string, Tuple<int, List<string>>>();

What do you get from the former that makes the eye-pain worth it?

Also, the var keyword is necessary for anonymous types if you want to hold a reference to one. And this is a language feature I sorely miss in Java-land.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by dbdr on Thursday November 17, 2016 @04:45AM (#12975957)
Since Java 7 you can use the "diamond operator" in such cases:

Dictionary<string, Tuple<int, List<string>>> foo = new Dictionary<>();

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by rzzzt on Wednesday November 16, 2016 @01:10PM (#12969647)
Lombok includes the "val" keyword, which infers the type from the initializer expression: https://projectlombok.org/features/val.html
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by samfisher83 on Wednesday November 16, 2016 @11:52AM (#12968827)
If you have visual studio it tells you what the var is.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by samfisher83 on Wednesday November 16, 2016 @01:54PM (#12970116)
I noticed my post was down voted. I am just sharing information. I don't understand why that merits a down vote.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by kuschku on Wednesday November 16, 2016 @11:57AM (#12968883)
So, where do I get a version fo Visual Studio that’s open source, and works on Linux? And not just the little text editor VS Code, a real IDE?

For most devs, Visual Studio isn’t a realistic option.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by leonatan on Wednesday November 16, 2016 @05:17PM (#12972112)
It's called Monodevelop, and it would have taken you 5 seconds to find using Google.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by eropple on Wednesday November 16, 2016 @06:10PM (#12972495)
I have a lot of respect for the Monodevelop team, because writing IDEs is really hard, but it is really not an awesome tool for writing C#. (The XS modifications were never great, either. I'd rather write code in Sublime Text because Sublime won't randomly lose lines in its text widget.)
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by serge2k on Wednesday November 16, 2016 @02:01PM (#12970197)
Well they just released a preview for VS on macOS.

Project Rider by Jetbrains is a cross platform C# IDE.

VS Code has some tooling.

etc...

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by mixedCase on Wednesday November 16, 2016 @04:23PM (#12971688)
VS on macOS is Xamarin Studio rebranded, which Xamarin has never wanted to port for Linux (despite being a fork of MonoDevelop). I don't see MS changing that.

Project Rider is still extremely green and is not FOSS, nor free as in free beer.

VS Code is extremely limited and the little support it has is for .NET Core only.

I'm right now working on an MVC 5 project on Linux and I have to jump around MonoDevelop and Rider to have a workable dev environment; with the occasional jump to a Windows VM and Visual Studio to make sure everything works over there (it often doesn't).

.NET IS NOT a viable stack for developing on Linux and it's an inferior one in macOS. If you want to do real work with it you have to eat, breathe and live Windows and VS.

If I didn't absolutely have to work with .NET in this particular situation I would've laughed all my way back to a real cross-platform stack.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by matthewking on Thursday November 17, 2016 @09:25AM (#12977661)
> .NET IS NOT a viable stack for developing on Linux and it's an inferior one in macOS.

.NET isn't, and wasn't officially meant to be. That's your problem.

I've been working on a .net core web app on my mac exclusively now for the last 8 weeks and have had no problems with it. I do check to make sure it works in full VS/Windows occasionally and every single time its worked without fail, and without a single change. Just pull the code and go. I haven't needed to touch windows but its nice to know it still works over there anyway.

Using VS Code as my main editor. Tried Rider a little yesterday and I'll probably switch to that once its more stable as it has a few more tools for refactoring etc.

So .NET core is clearly what's intended to be used cross platform, and it works great.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by eropple on Wednesday November 16, 2016 @12:09PM (#12969033)
Most developers use Windows, where VS Professional (under the badge of VS Community) is free. The set of developers who use Linux and OS X (and I mean, I am one) is not representative of developers of a whole.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by mmgutz on Thursday November 17, 2016 @09:10AM (#12977539)
You mean most .NET developers use Windows?
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by eropple on Thursday November 17, 2016 @02:21PM (#12980543)
I mean most developers, period, use Windows, on a worldwide basis. Most web developers use Windows. Most C/C++ developers use Windows. Most Android developers use Windows. Almost all .NET developers use Windows--but most developers, period, use Windows.

Windows is the de facto standard in most places that aren't chasing the leading edge.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by kuschku on Thursday November 17, 2016 @09:58PM (#12983951)
> I mean most developers, period, use Windows, on a worldwide basis.

I’m not sure anyone would agree with that.

Unless you also count designers, and kids who just learnt how to click together a website in Frontpage 2000 as developers.

Especially if you count compsci graduates, it becomes very obvious just how much *nix dominates.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by eropple on Friday November 18, 2016 @10:18PM (#12991886)
Sure! Unless you have ever, even once, stopped to glance at the overwhelming majority of line-of-business programmers that outnumber your notion of "developers" five to one or more.

But good job with the warrantless and wrong contempt.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Wednesday November 16, 2016 @08:08PM (#12973259)
> Class extensions: I saw code examples online that just wouldn't work for me because the compiler told me a certain method of a built-in class wouldn't exist.

One thing that VS can now do (as of VS 2015) is tell you where exactly the "missing" extension method is, and offer to add a corresponding `using` declaration for you.

Not sure if VSCode or VS/Mac support that, though. But they are all built on the same code analysis engine, so there's no reason why they couldn't.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by krzat on Wednesday November 16, 2016 @12:33PM (#12969278)
Interesting. I wonder what would be your opinion on languages with even more magic, like Swift.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by blauditore on Wednesday November 16, 2016 @01:45PM (#12970020)
I'm not saying it's a bad thing, I actually like both. It just takes more time to get up to speed and there is more surface of attack for devs to screw things up. That's also what I don't like e.g. about JS: It's so unrestrictive you can do a lot of wild things with it - which is sometimes good but often bad.

Idk about Swift, never used it yet.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by pjmlp on Friday November 18, 2016 @12:31PM (#12988397)
I guess you are out of touch with Java.

Extensions methods can be approached via default methods.

Java 9, latest by 10, will get var. It is already on the approved roadmap.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by serge2k on Wednesday November 16, 2016 @01:57PM (#12970154)
both of these are great tools, but as with many you have tradeoffs. Extension methods give you a way to produce very clean reusable code to extend behaviour of classes. Downside is you do need to bring in the extension method class (not a big deal).

Java is a shitty language exactly because they don't put in things like these out of fear that people don't know how to use them.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by ygra on Wednesday November 16, 2016 @02:48PM (#12970753)
Java has default methods on interfaces instead. It's their take on the same issue, in a way. They considered the fact that with C#'s extension methods types not owned by the developer can be extended (as well as platform types) a problem and opted instead for a solution where someone who owns a type also controls its extensions. Default methods in Java are purely a way of adding stuff to interfaces in your API without breaking existing implementations (but also allowing future implementations to override those methods). C# on the other hand is merely a bit of syntactic sugar which can be confusing at times. (I have to admit not to be a fan of various libraries that add extension methods to integers and similar. It's not a good way of exposing an API in my eyes.)

TL;DR: Java has something similar, it just came from a different view of how the problem should be solved. Both approaches have advantages and drawbacks.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by jrudolph on Wednesday November 16, 2016 @11:24AM (#12968473)
Silly amounts of magic? Ever looked at a Java Spring project?!
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by hacktothefuture on Wednesday November 16, 2016 @11:58AM (#12968898)
THIS!
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by jdmichal on Wednesday November 16, 2016 @11:03AM (#12968193)
In my experience, C# can be coded almost exactly like Java 8; just ignore the extra features C# has. (I don't know why you would, but it's certainly possible.) Do you have more specific complaints?
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by cptskippy on Wednesday November 16, 2016 @12:52PM (#12969460)
Plumtree Portal / BEA Aqualogic Interaction / Oracle WebCenter documentation is/was a perfect example of this. When I was working on it, all of their code samples had a footnote that said something like "all code examples work in Java or C# unless otherwise noted". I don't recall ever coming across a language specific example.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by baldfat on Wednesday November 16, 2016 @11:09AM (#12968285)
Why would someone down vote an opinion that they are okay with Java? It added to the conversation. Personally I prefer C# and Swift to Java but others idea are just as valid.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Drdrdrq on Wednesday November 16, 2016 @12:01PM (#12968921)
Imho people are just expressing their disagreement. I know downvote is not meant for that, but I think HN is to blame here. If you have two arrows, one up and one down, why is up for agreement while down is not for disagreement, but for "this doesn't add to conversation"? The actions should be opposite, or they should use different icons.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by wehadfun on Wednesday November 16, 2016 @12:18PM (#12969123)
Really good point!
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by mikestew on Wednesday November 16, 2016 @11:44AM (#12968727)
The implication is "I have no interest in this because I'm happy with what I have". Okay, that's fine, please enjoy your Java and build wonderful things. Oh, BTW, why are you typing into a reply box on a thread you have no interest in? And the implication there is because your tool is a poopy head and I wanted to subtly point that out by expressing my lack of interest.

So, yeah, go away because that's not contributing to the conversation.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by kuschku on Wednesday November 16, 2016 @11:55AM (#12968867)
> So, yeah, go away because that's not contributing to the conversation.

Well, maybe there’s another implication.

Google switching to C# would lead to them neglecting and deprecating the Java ecosystem on Android. That’s gonna be real ugly for app devs, ending up having to rewrite everything.

So, maybe, there is a real contribution in the comment, which you just haven’t seen yet?

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by lagadu on Wednesday November 16, 2016 @12:21PM (#12969165)
I don't think anyone is suggesting Google should drop Java, just that C# should be made a first class citizen, side-by-side with Java.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by kuschku on Wednesday November 16, 2016 @04:23PM (#12971691)
Yet, that’s what’d happen. Google hasn’t even managed to support C++ alongside of Java as first class citizen, adding yet another one would make the situation even worse.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by tzs on Wednesday November 16, 2016 @01:37PM (#12969940)
> Why would someone down vote an opinion that they are okay with Java?

Paul Graham once said [1]:

  I think it's ok to use the up and down
  arrows to express agreement. Obviously
  the uparrows aren't only for applauding
  politeness, so it seems reasonable that
  the downarrows aren't only for booing
  rudeness.

  It only becomes abuse when people resort
  to karma bombing: downvoting a lot of
  comments by one user without reading
  them in order to subtract maximum karma.
  Fortunately we now have several levels
  of software to protect against that.
[1] https://news.ycombinator.com/item?id=117171

Many have taken this to mean that down voting a comment when they disagree with the opinion therein, no matter how well it argues that opinion and no matter how much it contributes to the conversation, is fine.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by baldfat on Wednesday November 16, 2016 @02:31PM (#12970556)
This is the number one reason why I looked for a different place and was hoping lobst.er would have taken off.

The down vote causes the comment to be dimmed and seen as a rejection to the comment. It is very frustrating when the top right side is your name and your "Hacker News Points" so I don't get why the down vote if you disagree. A down vote kills the conversation.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by bengale on Wednesday November 16, 2016 @11:30AM (#12968546)
It was probably more the 'no thanks'. Got mine sort of mentality, two can co-exist.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by optimiz3 on Wednesday November 16, 2016 @12:18PM (#12969125)
An opinion without justification adds nothing.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by criddell on Wednesday November 16, 2016 @12:44PM (#12969375)
Care to justify that opinion?
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by optimiz3 on Wednesday November 16, 2016 @03:34PM (#12971219)
A useful opinion is the result of some thought process and set of inputs. By not explaining that thought process or its set of inputs, it is impossible for others to validate whether an opinion is reasonable and/or useful.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by usrusr on Wednesday November 16, 2016 @11:10AM (#12968298)
I like Java too and it's a shame we are limited to some weird bastardization of different source levels on Android.

A credible threat of Google moving Android away from Java is the best hope we have of this situation ever improving.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by ygra on Wednesday November 16, 2016 @02:28PM (#12970531)
Well, it could be worse. At least the standard library is there, as opposed to GWT (where you pretty much cannot use any Java library at all).
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by samfisher83 on Wednesday November 16, 2016 @11:28AM (#12968515)
C# and java are very similar except C# has a bunch of extra features. Instead of creating anonymous classes and overriding methods you use event handlers. Plus you have linq,lambdas, operator overloading etc.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by kuschku on Wednesday November 16, 2016 @11:54AM (#12968849)
There’s also the Stream API and lambdas in Java.

Operator overloading is probably the worst feature ever invented, same with Class Extensions, reducing readability of code.

And with a switch to C# Google would neglect the Java ecosystem on Android, requiring us app devs to rewrite everything again.

I’m not sure there’s an upside to switching to C#.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by serge2k on Wednesday November 16, 2016 @02:06PM (#12970266)
> Operator overloading is probably the worst feature ever invented, same with Class Extensions, reducing readability of code

or greatly enhancing it. Depending on how you use it.

That's why Java is a language for idiots. I'm not saying everyone who uses it or likes it is an idiot, it's a reasonable language to like. I'm saying it's designed to be usable by idiots. Can't have operator overloading, it might be abused. Can't have unsigned types, no one ever should use those. etc...

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by bitmapbrother on Thursday November 17, 2016 @03:27AM (#12975524)
Every language is usable by idiots and some are even copied by idiots (C#). The constant security problems we face today were all created by idiots that didn't fully understand the language and the implications of what they were doing.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by recursive on Wednesday November 16, 2016 @12:19PM (#12969141)
IMO operator overloading is less bad than goto. (C# has them both)

C# also has yield, async, structs, reflection on generics, and a number of other features.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by samfisher83 on Wednesday November 16, 2016 @01:37PM (#12969938)
I think using goto when breaking multiple loops is useful.At least you know where the next line will be.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by recursive on Wednesday November 16, 2016 @02:05PM (#12970251)
There are reasonable applications for goto. But I think there are more reasonable applications for operator overloading. (like Complex, BigInteger, or dimensional types)
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by jaegerpicker on Wednesday November 16, 2016 @12:50PM (#12969449)
Lambda's are horrid on Java compared to C# IMO.

Class extensions can be fantastic and really enable design elements in elegant ways, any advanced feature could be argued that it reduces readability if used poorly.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by naasking on Thursday November 17, 2016 @10:29AM (#12978252)
> Operator overloading is probably the worst feature ever invented

A seemingly common sentiment, but one rarely backed by any meaningful data.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by kentosi on Wednesday November 16, 2016 @11:02AM (#12968182)
Or have both. What's in Java 8 that isn't in C#?

And last I checked you couldn't use Java 8 fully on Android (please correct me if I'm wrong).

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by daxfohl on Wednesday November 16, 2016 @11:07AM (#12968247)
Anonymous classes are the big thing I miss. (Yes C# has a feature called "anonymous classes" as well, but it's completely different).
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by TheCoelacanth on Wednesday November 16, 2016 @11:48AM (#12968764)
What do you still use those for? I can't remember the last time I saw an anonymous class used in a way that isn't superseded by lambdas.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by daxfohl on Wednesday November 16, 2016 @12:12PM (#12969064)
Yeah, I was thinking about that when I wrote the comment. They were most useful for `Observable` objects for event handling in swing; you don't really need that with C# events.

There are still uses though. Lambdas are the future, but there are lots of OO-first libraries that are still quite popular. It'd be nice to create e.g. `new Newtonsoft.JsonConverter() { ReadJson() {...} WriteJson() {...}}` etc on the fly sometimes without needing separate classes.

It's possible in F# though, so nothing dotnet specific is preventing it.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by jdmichal on Wednesday November 16, 2016 @02:07PM (#12970271)
I use them all the time for defining singleton implementations.

    public static final MyInterface SINGLETON = new MyInterface() {
        ...
    }
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by ckarmann on Wednesday November 16, 2016 @11:20PM (#12974237)
Java enums are the one thing that I miss in other languages.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by adzm on Wednesday November 16, 2016 @11:09AM (#12968278)
If only we could run IL on the JVM
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by johncolanduoni on Wednesday November 16, 2016 @11:03AM (#12968190)
You are painfully correct...
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by xorxornop on Wednesday November 16, 2016 @03:36PM (#12971235)
Value types. Reified generics.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by pweissbrod on Wednesday November 16, 2016 @12:26PM (#12969215)
I agree that C# would be a step up, it's not a big enough difference to justify a migration. Also the cross-platform tools aren't good enough yet
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by bitmapbrother on Wednesday November 16, 2016 @01:23PM (#12969781)
I'm sure they'll get on it right after Microsoft stops extorting Android OEM's that can't afford to fight their BS patents.

Also, Google joining the .NET foundation was a cloud move. Nothing more.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by wesamco on Wednesday November 16, 2016 @02:42PM (#12970679)
I doubt it's going to be a first-class citizen like Java anytime soon.

there is a lot of Innovation going on, with the new open source .NET. the CoreRT[1] project compiles C#->C++->Machine code for any platform, including ARM. and Samsung has been a big contributor to make that happen. and today during the Connect() event, they announced that every Xamarin forms app will run on Tizen[2].

[1] https://github.com/dotnet/corert [2] https://www.tizen.org/blogs/dh0922/2016/tizen-.net-developer...

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by ygra on Wednesday November 16, 2016 @02:52PM (#12970804)
Where did you get that they compile C# to C++? I thought .NET Native was compiling to machine code, maybe with IL in between, but certainly not via another high-level language.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by wesamco on Wednesday November 16, 2016 @03:24PM (#12971117)
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by ygra on Thursday November 17, 2016 @03:18AM (#12975474)
Ah, thanks. Didn't notice that part. So it's more an option, among others, while the "normal" .NET Native toolchain directly goes the IL → machine code route via RyuJIT.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by pjmlp on Friday November 18, 2016 @12:35PM (#12988425)
.NET Native doesn't use RyuJIT, rather Visual C++'s backend.

CoreRT uses RyuJIT.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Zigurd on Wednesday November 16, 2016 @10:34PM (#12974003)
Android is deeply dependent on a runtime with Java semantics. The only realistic hope for an implementation language other than Java would be a VM language like Scala or Kotlin. Kotlin is a semi-official alternative, since it is supported by the IDE technology provider.

C# is close enough that ART could likely be extended to encompass it. But it would be somewhat more work than supporting an actual JVM language.

BUT the real question is, with modern IDEs, does it matter? How much do you need a prettier and/or more concise language? And if you do, why not Kotlin?

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by xeromal on Wednesday November 16, 2016 @10:49AM (#12967990)
That would be dope! I'd kill to have WPF ported over too!
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by JustSomeNobody on Wednesday November 16, 2016 @12:06PM (#12968990)
Oh please no. Not a fan of WPF.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by AlexDanger on Wednesday November 16, 2016 @12:15PM (#12969098)
I thought MS was (quietly) killing WPF and burying it next to Silverlight? Not soon enough I think. Nice idea, headache inducing implementation.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by youdounderstand on Wednesday November 16, 2016 @01:14PM (#12969682)
UWP and Xamarin apps can use XAML, so it's not like the underlying ideas of WPF/Silverlight are dead.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by ygra on Wednesday November 16, 2016 @02:32PM (#12970584)
WPF is a lot more than just a markup language for object graphs. Heck, the features I consider most essential and important to WPF (data binding, templating, and the idea that controls only encapsulate behaviour) have nothing to do with XAML at all.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by nightski on Wednesday November 16, 2016 @02:50PM (#12970783)
But aren't all those features you mentioned part of UWP also?
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by youdounderstand on Wednesday November 16, 2016 @02:47PM (#12970741)
Both UWP and Xamarin Forms have all of that.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Grazester on Wednesday November 16, 2016 @10:50AM (#12968012)
What exactly would be the benefit of this?
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Longhanks on Wednesday November 16, 2016 @11:03AM (#12968201)
No more problems with Oracle, C# features that Java is missing, such as type inference, proper generics, built in concurrency, operator overloading, first class optionals, ...
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by michsanders on Wednesday November 16, 2016 @05:07PM (#12972028)
No more problems with Oracle, but what about Microsoft? Today we have the "cool" CEO, but that may change in the future. Remember Android started when Java was in Sun Microsystems' hands.

Apart from that, C# and Java are not very different from each other. You can get many of that "features" from other Java languages, no need to move away from the JVM, so you can still benefit from the largest community.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Grazester on Wednesday November 16, 2016 @11:47AM (#12968761)
Their move to Open JDK should do away with the oracle issue no?
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by pjmlp on Friday November 18, 2016 @12:36PM (#12988437)
They are just cherry picking features, check the AOSP.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by johncolanduoni on Wednesday November 16, 2016 @11:08AM (#12968276)
Better support for mixed managed/native code for one. There's P/Invoke, and .NET's byte code includes instructions for low level pointer manipulation (which C# exposes).

You could even compile C/C++ to CIL and obviate the need for some architecture specific binaries.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by kuschku on Wednesday November 16, 2016 @11:48AM (#12968765)
Actually, with the JNA (not JNI), one can invoke native code from Java even easier than in C# – you just define a Java Interface containing the relevant C functions, bind the library, and get an Object implementing it.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by KMag on Wednesday November 16, 2016 @12:40PM (#12969336)
But that C/C++ code you're calling still needs to be compiled to native code. The GP was referring to .NET CIL (bytecode) supporting (by design) a large subset of C/C++ semantics.

The GP wants to avoid shipping N different binaries for N platforms in cases where the C/C++ code being called isn't already on the platforms.

I haven't used Managed C++ and I'm fuzzy on the details, but my understanding is that a fairly large subset of C/C++ can be efficiently compiled to .NET CIL. (Of course, the class loader for untrusted security contexts will refuse to load classes that use the type-unsafe/memory-unsafe portions of .NET CIL, just like the Java classloader for untrusted applets won't load classes making arbitrary JNI calls.)

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Wednesday November 16, 2016 @08:16PM (#12973315)
Based on what I know about CIL and C++, the entirety of C and C++ can be compiled to [unverifiable] CIL. The sole exception is setjmp/longjmp - this might be doable on top of CLI exceptions, but I'm not sure.

And, indeed, VC++ lets you do just that. There are some bits of the standard library, mostly new stuff like threads and atomic, that had some issues, as I recall. But it's more about the amount of effort that's needed to target what's essentially a completely different platform.

The thing to know about CIL is that it has:

- structs;

- unions;

- raw data pointers, with pointer arithmetic;

- raw function pointers;

- dynamic stack allocation (like alloca in C);

- tail calls;

- exceptions with exception filters (arbitrary expression evaluation when deciding whether to transfer to a given catch-block or not) and finally blocks.

I'm actually curious if there's any language that cannot be compiled down to this efficiently.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by pjmlp on Friday November 18, 2016 @12:38PM (#12988456)
Dynamic languages cannot be easily mapped to CIL, which is why IronPython was the genesis of DLR extensions, later added as standard part of .NET.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Friday November 18, 2016 @09:04PM (#12991594)
Dynamic languages typically aren't compiled, though. So either a language would have some kind of VM of its own (which is typically implemented in C, and hence can be implemented in CIL), or else they have some form of JIT compilation, which can use CIL as a target.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by pjmlp on Saturday November 19, 2016 @09:34AM (#12993635)
Those are scripting languages.

If you bothered to read why DLR was created, you will see why CIL wasn't enough.

Or why Java following the same linr of thought had to follow DLR changes to the CLR and introduce invokedynamic byte code and its related infrastructure.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Saturday November 19, 2016 @05:27PM (#12996062)
I know why DLR was created. I work on a team that has one of the guys who was working on it, and specifically on IronPython.

My point is that they are two different layers in the stack. CIL and JVM are lower level. DLR is a higher level layer. Said higher level can be implemented on any kind of lower level that's powerful enough - for example, you could have a kind of DLR directly on top of native code. All that matters for the lower level is that it's flexible enough to permit something like DLR to be implemented on top of it. CIL is undeniably flexible enough for that.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by pjmlp on Sunday November 20, 2016 @04:03PM (#13001210)
I remember reading some articles that justified DLR as CIL not having enough semantics that allowed to properly implement optimization algorithms commonly used in dynamic languages, like method lookup and call site caches.

Then again, maybe I understood it wrongly back then and I surely don't have the knowledge of your team.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Tuesday November 22, 2016 @09:01PM (#13019354)
Yes, that's right. But it's kinda what I meant. CIL is really roughly the level of C, plus some strongly typed object oriented stuff on top. It doesn't really offer anything useful for a dynamic language directly. But you can use it to implement a dynamic language VM with all those optimizations - just like C was used to write Parrot VM. DLR is to CLR as Parrot is to native code.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by int_19h on Wednesday November 16, 2016 @08:12PM (#12973287)
With C#, you can implement an IUnknown-derived interface completely in C++ (with `class` etc), and then define it in C#, and it transparently does all the mapping of members for you.

Yes, it's COM. People assume that makes it non-cross-platform, but there's nothing Windows-specific about COM, it's just a slightly higher-level ABI than C. So Mono supports it on Linux in the same manner. Not sure what the story is in .NET Core.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by akyu on Wednesday November 16, 2016 @11:12AM (#12968329)
It would be worth it just to have LINQ
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by JustSomeNobody on Wednesday November 16, 2016 @12:08PM (#12969020)
LINQ is cool and all, but it takes a lot of code to make that cool, so I would love to see how it affects battery life.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Grazester on Wednesday November 16, 2016 @11:51AM (#12968818)
LINQ and Lambda expressions had me liking C# a lot back when I used it for an Entity Framework project I was on(well java got Lambda expression not too long ago though)
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by kuschku on Wednesday November 16, 2016 @11:48AM (#12968777)
Why? The Java Stream API is superior to LINQ in every way, and a lot more extensible.

EDIT: Instead of downvoting, please point out how LINQ is actually superior?

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by kodfodrasz on Wednesday November 16, 2016 @03:40PM (#12971280)
the Stream API is nice, but it is not extensible. I guess you have mistaken LINQ with the SQL style LINQ queryes, but it is actually a pack of feautures, the basis of all is the Extension Methods. Every LINQ query is just syntactic sugar for composed of some extension methods to IEnumerable<T>. Without that LINQ is a bunch of extension methods giving an extensible fluent API much like the Streams API, but with true extensibility.

How do you extend the the java Stream API? for LINQ you just drop in a few extra extension methods for IEnumerable<T>, IOrederedEmumerable<T>, IQueryable<T>, etc.

How do you reverse a stream in java? (I know you need to evaluate the whole stream for that) You can write a utility method, but that will break the fluent readable logic. In C# you can do the very same thing, with the same method usable as an extension method keeping the readable fluent expression.

Starting a stream is a PITA itself, as it differs for Iterables, Arrays, Collections... Been there, done that. Not that with some utilities these could not be overcome, but it was an inferior experience to LINQ.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by kuschku on Wednesday November 16, 2016 @04:23PM (#12971690)
> How do you reverse a stream in java?

By calling .reverse() on it, and making it iterate the other way around?

> extension methods

Extension methods are something that’s really really problematic, and easy to create confusion with.

That said, I’d just import the functions I want to call on the stream into my local namespace with import static.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by kodfodrasz on Thursday November 17, 2016 @02:13AM (#12975116)
When i last used the stream api i don't remember it had a reverse functionality. Still that was an example only.

Edit: Just checked: https://docs.oracle.com/javase/8/docs/api/java/util/stream/S... no reverse().

Fyi for 1 year I have been working on a Stream API heavy app. Now working on a C# project with quite some LINQ. I know both sides to some extent...

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by adgasf on Thursday November 17, 2016 @09:11AM (#12977548)
How is stream superior? I cringe every time I move between Integer and int.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by serge2k on Wednesday November 16, 2016 @05:52PM (#12972372)
You made the bold statement, why don't you say something to support it.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by justin66 on Wednesday November 16, 2016 @11:06AM (#12968233)
Using a language not in the hands of Oracle.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by ksubedi on Wednesday November 16, 2016 @10:52AM (#12968055)
That would be great!
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by guelo on Wednesday November 16, 2016 @12:24PM (#12969200)
If you want to make C# apps you already have Windows Phone and now Tizen.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by MattRix on Wednesday November 16, 2016 @08:08PM (#12973254)
lol
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by robynsmith on Wednesday November 16, 2016 @12:06PM (#12968986)
Is the C# runtime open source?
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Strom on Wednesday November 16, 2016 @12:08PM (#12969008)
Yes, you can find it on github. [1]

[1] https://github.com/dotnet/coreclr

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by my_ghola on Wednesday November 16, 2016 @11:43AM (#12968717)
Doesn't Xamarin compile C# to Java/Dalvik bytecode already?
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by calt on Wednesday November 16, 2016 @11:59AM (#12968909)
There's a big difference between being a supported first class citizen and having a hacked together ecosystem that Mostly Works™.

After my experience with Mono on past .NET versions, I'm skeptical of any of these "compiles to x" schemes.

Re:Google joins .NET Foundation as Samsung brings .NET suppo... by Kipters on Wednesday November 16, 2016 @07:34PM (#12973073)
No, they compile to IL and run it with Mono (embedded as a native lib). Optionally you can AOT-compile it to native code.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by michsanders on Wednesday November 16, 2016 @05:08PM (#12972038)
What for? I don't think that would be an improvement at all.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by yulaow on Wednesday November 16, 2016 @12:04PM (#12968963)
Personally I would much much more prefer a switch to Kotlin than to C#. And I bet, after the collaboration for android studio, Google and JetBrains are already working on it
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by batina on Wednesday November 16, 2016 @11:10AM (#12968300)
Yes, that would be awesome!
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by sandGorgon on Wednesday November 16, 2016 @11:03AM (#12968197)
this. or atleast acquire jetbrains and make kotlin the standard.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by nine_k on Wednesday November 16, 2016 @11:29AM (#12968536)
Only please don't acquire JetBrains. Being acquired by Google is like being contacted ny the Borg.
Re:Google joins .NET Foundation as Samsung brings .NET suppo... by lincar on Wednesday November 16, 2016 @10:11PM (#12973912)
Java is a better language. The one Microsoft copied to create C#. The JVM is a better .Net than .Net is and has been since the start.