Longhorn is the .NET version of Windows which finalizes the replacement of the WIN32 API with a managed system, as well as a massive rethink as to the way developers write applications for Windows and consumers interact with their computers. Read the article at ZDNews.
Now that we know that Longhorn is going to be basically managed code everywhere, where does that leave developers that don’t want to use managed code? I was specifically thinking about games. The article mentioned that the native win32 api is being redesigned, but didn’t expound on that.
Right now, there are thousands about thousands of c-style api calls for windows. Is Microsoft just going to rework a subset of these apis for those calls that people will need for performance critical apps? Are you even going to be able to write windows apps in straight c anymore? Maybe there’s info out there on all of this, but I haven’t seen it. Does anybody know anything about this?
Longhorn does look promising, however I personally have some reservations. It could be I am not understanding the relevance of a database holding all your files versus a directory/file structure currently in use. That seems to work all too well for me. Is this the same type of thing as a journaling FS such as Reiser, or completely different? Anyone have any references I could look at to try and determine if this is the right way to go?
Microsoft does not want you to be able to generalize, they want a stronger hold upon the factors of production (research and development) and they can accomplish that through abstraction, another layer. You will still be able to develop games ofcourse because that means almost nothing just use their DirectX or whatever other API they provide for that purpose. The .Net framework has a managed library for DirectX (a microsoft only graphics library) so you can use that as well, it is not too bad, but no suitable for all generes of games. The only thing that you can never ever do on the Microsoft platform is implement systems, that is not in your control and it never will be, they will make sure of that, in fact that is the primary reason for their innovation.
Try reading the article. Longhorn will most likely wrap the existing API, only make it cleaner.
Well all the old Win32 apis will still be there, to maintain backwards compatibility with win32 apps.
To use the newer Apis, (Avalon,WinFS,Indigo) it looks like you will need to go through an interop layer to call the managed apis from native code.
Games using native directx will continue to use native directx, they don’t need to make use of the higher level presentation layer (Avalon).
Some of the win32 apis will actually go through the newer systems. Eg GDI calls will go through the DCE.
For high performance I’d imagine you’d write your performance critical code in native and then use the managed apis for display.
It’s not a wrapper, it is a layer, which means that it either has to be translated or else interpreted, but by doing this Microsoft can hide their system interface, that is just the first step.
I guess you didn’t read my comments. If you had, then you would have noticed that I said that the article mentioned that they were redoing some of their native system calls, but that it didn’t go into detail.
No you will not be able to use the system interface layer in the future. They are translating .Net calls into possibly Win32 calls (nothing to do with wrappers) or even a lower layer, but there might be some slack to work with. They might be able to scale down the tanslation by using less or more primitive calls, but who really knows. This ofcourse is all theoretical, everything is theoretical and the bottom line is that you will be forced to specialize as a solution developer becuase the Microsoft product is a product it’s not an operating system. It makes no sense to give developers any options execept to do things the way that Microsoft dictates that things be done, otherwise people would be able to resist purchasing upgrades.
well, apparently, the new system will be much better at multi-media, so a greater abstraction for the games should not impact their performance.
Ok, I don’t mind Windows, and I probably will buy Longhorn when it comes out, but…. Geeze, It’s not coming out until 2006! I’m already sick of the internet press Longhorn is getting. I seem to remember feeling the same way with Win95. If Micro$oft starts the television campaign, it’ll be Tivo’d only programs for me!
all the old APIs will be there but developers will not have access to them. this allows MS to revamp he API subsystem with out affecting the programs built on the interface.
From an end users perspective or else a solutions developers perspective the new API will be cleaner and more logical, but you will be restricted to developing solutions as opposed to systems. If you are a computer scientist than the Microsoft product won’t be any use to you.
The whole premise of MS’s business model has always been lock-in (i.e., you have to use it because everyone else is and nothing else interoperates fully or at all).
But Longhorn takes this up a few notches. They seem anxious to get rid of such annoying cross-platform things as normal web browsing and replace it with an Internet That Requires Windows.
The sad thing is they know exactly what they are doing, but a lot of poor saps in the real world will deny it and just make a lot of excuses for MS. Sad, really.
what kid of systems are you talking about?
are you claiming that you can not develop a program that does not use the API system, like I could not develop a program that printed hello world with out defining a GUI window for it, or calling another system API?
or what about scripting? are you saying I could not run a Pearl or python script?
what kid of systems are you talking about? no wxWindow programs any more?
how is going to lock in the internet to an MS only world using Longhorn?
web services? that will not replace the web, it will just be a more specific solution for things like Shopping a store you like or what have you so you do not have to go to the web to buy things like flowers for your wife or buy movie tickets from your local theater.
This is all sooo funny. The release is only 3 years away and yet M$ has everyone in a lather about Alpha-ware. They don’t need an ad agency, all their co-dependant minions do it for them.
After all is said and done, it will stil be the same old M$ many have grown to loathe and despise.
But enjoy!!! Support the Monopoly!!!
I was late posting this in the appropriate article discussing the new CLI a while back and I think most people missed it, hence this repost. If you are interested in knowing more about the new Longhorn CLI, this might be of use to you…
Building Manageable Apps: Admin Scripting and Automation (MS PowerPoint file used for PDC presentation)
http://www.gotdotnet.com/team/PDC/4118/ARC334.ppt
Longhorn Command Shell (MSH) Preview
– Log into http://betaplace.com with your .Net passport
– Use the guest account: mshPDC
– A logon and password will be emailed to you within 24 hours
– This account gives you access to the download bits, SDK, samples, private newsgroup and a feedback/bug reporting environment
A system is a type of program that requires you to generalize. In other words it requires you to perform research and development and to build your own software libraries, as well as have control over the implementation of the operating system because the system will be tied to the operating system layer, typically you will rely on a system interface but possibly also a layer underneath the operating system such as the instruction set architecture.
On the other hand a solutions developer strictly reuses vendor libraries and specializes the vendor objects for his business domain, he does not perform his own research but leverages the research of the vendor using the tools he is given.
Microsoft is not suitable as a platform so it is not an option for system implementation. The platform is unstable becuase it can change without notice, it is not in your control and also now entire layers are unaccessable. It is in fact not a platform but a product.
Microsoft is clearly stating that they are the only ones that will control the direction of their product and the only relationship that you can have is by being dependant upon thier offerings.
Please, enough articles about Longhorn!!! Given Microsoft’s track record, it won’t be here for 3-4 years. By then it won’t resemble the dog and pony show they put on last week in the least bit.
This is OS News, remember? OS Research and Development is appropriate content here, even if it is MSFT and even if it is Alpha.
I guess I never thought of it like that because I have always thought of Windows as a platform to develop to not a product to modify and research on.
if I was doing research, I would pick a BSD or a Linux. if I wanted to make money, I would develop to windows or OS X.
You will still be able to develop games ofcourse because that means almost nothing just use their DirectX or whatever other API they provide for that purpose.
Hmm…what if you want to use OpenGL, so that the game can easily be ported to other platforms, such as OS X and Linux?
If Longhorn is just going to make interoperability and cross-platform development harder, then I don’t care how innovative it is: it’s detrimental to a diverse OS ecosystem and as such is a Bad Thing(tm).
Regarding OpenGL, I was wondering the same thing. Also, is there going to be interop support for writing straight c apps? I know it’s a lot easier to do managed c with .NET than say java bytecode because of the architecture of MSIL(DotGNU has managed c), but what about the bindings to the api?
Still needs Cross-platform Java support.
What else will Microsoft abandon in the coming years.
Microsoft will probably eventally just support libraries that make the company money. The libraries that they own, but they have to comply for a couple more years to a lawsuit that has some restrictions and constraints preventing them from weeding out all their competitiors, otherwise it would have been done already.
You know, its absolutely ironic. For the longest time, people didn’t use more powerful languages (Java and C# don’t count, I’m talking about *real* languages) because there was a 25-50% performance hit. You pay that performance hit once, and you get:
1) Safety – The compiler guarantees that stuff like buffer overflows, etc, can’t happen.
2) Rapid development – Some of the more advanced languages let you write code as fast as (or faster than) Python or other “scripting” languages. OS X developers get a taste of this with ObjC, but there is so much more!
3) Awesome development tools – Some of the stuff that Java/C# are just now getting (refactoring code browsers) have literally been around for decades in languages like Smalltalk.
4) Speed – Think about how many CPU cycles that virtual machine and all those managed APIs are sucking up! Then consider that they are layered on top of existing OS-level protections (processes, security APIs) which are again layred on hardware-level protection mechanisms. So you save a few cycles here and there, and then lose a huge amount of performance because suddenly all OS calls take hundreds of clock cycles.
IMHO, the BRiX project has the right idea: http://brix-os.sourceforge.net/?p0=info
You write the kernel and the apps using a safe language. Crush (the language BRiX is based on) is a dynamic/static language with garbage collection, OOP, multimethods, and constraints. It seems to have a bit of a Lisp/CLOS influence, judging from the design doc. Language implementations such as cmucl, bigloo, and gwydion-dylan have proved that you can get greater than 80% the performance of good C code out of such a language.
So you pay your 20% performance hit, and bask in the glow of essentially free kernel calls. What does this mean? Say goodbye to complex VM algorithms for sharing memory between processes, VM goes back to doing what it should do, merely managing memory. Say goodbye to IPC mechanisms that involve tons of copies. Say goodbye to userspace servers that complicate synchronization. Say goodbye to layers and layers of software that have no purpose other than to protect apps from each other.
Overall neat stuff but one thing really struck me about that article.
Is that guy honestly advocating creating skinning on a per application level. He complains that win32 makes it too hard to override the native look and feel? This guy seems like part of the reason why my windows desktop experience sucks. Heck linux is passing it in regards to consistency, and microsoft is one of the worst offenders. (msvc, office2003, msn, wmp… all have their own look and feel)
What I want to see is microsoft put out a hig like apple and gnome.
what is a “real” language? and why are Java and C# not one?
Hmm…what if you want to use OpenGL, so that the game can easily be ported to other platforms, such as OS X and Linux?
Well, MS does not officially support OpenGL anymore anyway. They only support DirectX. OpenGL is supported by the video card manufacturers. That is the reason why OpenGL is not installed when you install windows. Support for it used to be available in Windows 95/98, and I believe ME, but no longer.
So to answer your question, the same thing that has to be done now, which is get the OpenGL from elsewhere.
his point is that with out direct access to the system API or Kernel, an openGL implementation is garbage on the system.
The “real language” bit was attached to the “more powerful languages” phrase. Java and C# are “real” languages like C Python, but they’re not “real” choices if you’re looking for “more powerful languages.” Those are languages that offer features that go beyond the standard statically-typed/partially-OOP/procedural style that C/C++/Java/C# all offer. They include features like lambdas, closures, multimethods, genericity, pattern matching, macros, dynamic typing, are any of a number of advanced features.
well, I would say that most of the features you state, are not used in any main stream languages.
That’s the whole point! When I say “more powerful languages” I mean languages that more more powerful than the ones that are mainstream today. Java and C# don’t really offer any features that the other mainstream languages don’t (aside from maybe GC) so they are not real candidates for a “more powerful language.”
yes, well I understand your point. IMO, C# was a solution looking for a problem.
it uses a VM like Java, but it will not be Multi-platform like Java’s VM.
you can do OO better in C++, and you can get the best Speed using C.
C# has nothing of use except that its byte code will be what all code for MS apps will be compiled to.
I would not say Java has no power, its power is in the fact that it can be run on any platform with the same code base making it a very economical solution for custom applications in a heterogeneous environment.
also, C# is very much over kill for scripting, so it does not fit well there.
I want to see what the Free Software OS developers out there are going to do about this. But somehow Microsoft has proven to be the leader(Tablet PCs for example), It seems that (some of)the goods in the *nixes is being applied already to the new M$ O$, But I bet those poor C developers won’t be able to move on to the future(MS) unless they want to. But that’s where their(OSS devels) comes in, since longhorn’s release is still in 2006, I really want to see the Open Source community’s maneuver.
Tablet PCs aren’t selling. you would think the form factor would rock, but the machines are to heavy and to awkward to do anything on.
I do think the where the Nix OSs will have problems is moving to the OpenGL rendered desktop. that will mean a huge change in X11, and that will be SLOW.
so one of two solutions will occur, they will toss X11 for another more modern windowing system, or X11 will break backward compatibility with all prior X11 systems.
the former, you loose the X11 based apps, including the DEs, and you loose the Drivers. the latter, you loose the X11 Apps and DEs, but keep the drivers.
I think that the latter will be the choice, but it will take a fork and a massive adoption from Gnome and KDE for it to work.
I think this might be a big problem for Linux on the desktop.
You’re right. The multiplatform aspect is a real feature Java has over languages that compile to machine code.
The ‘real language’ part is the just the language definition. So Java or C# or C++ have all have a language definition, some call it a specification. You can acquire these documents from standards organizations like ISO or Ecma or IEEE.
The language defintion is different than the implementation of the language because it is only a specification. A compiler writer will reference the language definition and he/she will use it as a guide in order to implement the compiler and supporting Standard libraries, but typcially a language definition does not tell you how to implement the definition, that choice is yours, but your compiler does have to meet the behavior and requirements of the definition in order to be standard compliant.
All of the .Net libraries are not part of the language definition, they are simply vendor libraries written in C#, however since .Net has a virtual machine runtime, that virtual machine is perhaps a separate specification. So .Net comprises of more than one specificaton.
It is entirely possible to implement a software layer supported by a virtual machine that compiles to the Standard C++ language definition and is than interpreted. In other words Microsoft could have made .Net or SUN could have made Java use C++ instead of creating a new language, but their goal is tied to a strategy of offering a more productive language that targets average skilled programmers and business solutions.