"For the best experience, open this chapter as a playground in Xcode. Playground allows you to edit the code listings and see the results immediately."
:applause:
How do you do this? I have the book and the newest beta xcode yet i have no idea how to "open a chapter as a playground."
For the best experience, they would explain how to do that.
The important thing is not the language but the IDE and API on which the Apps is based on. Before .NET, Microsoft had no unified and modern IDE, .NET was a created in reaction of Objective-C and Xcode IDE. Because .NET was rushed Microsoft has screwed their first 4 versions of .NET, making every iteration of .NET binary incompatible with each other, forcing every Windows users to keeps multiple version of .NET runtime environment up to date. Still today many own Microsoft apps bundled with Windows are not ported to .NET, because Apps based on win32.dll runtime API needs rewrite to be ported on .NET.
Beside, while you can target other platform with C# and third party API (Mono), same applies to Objective-C and since Swift is part of LLVM and CLANG, it will surely be available in open source like everything else. How do you thing Apple is porting Safari and iTunes to windows, did you know before being OSX, OpenStep was NeXT Step runtime environment for running NeXT apps within Windows and Apple still use it for their own Windows apps?
I agree, there is nothing unique with the Swift language itself, but the revolution is with Xcode playground. Have you see how powerful it is to have a language that can be both compiled and interpreted? You can see actual result while you are coding, you've got an interactive playground and debugging tools nowhere seen elsewhere for a compiled runtime. All C derivatives languages are burden by C legacy, things like semicolon at each line was mandatory because of the teletype origine of C. It was really time for someone to rethink and bring a fresh start to modern programming language and development tools.
I recommend you to watch the WWDC 2014 Platforms State of the Union video, they show Xcode playground more in depth with interactive documentations, live results and visual debugger.
.NET was not a reaction to Objective-C or XCode - .NET was first introduced back in 2000 - long before Apple was of any real significance. To even suggest such a thing is out and out ridiculous. .NET was more a reaction to Java and the need to play better with the web. The is fact, .NET probably would not exist at all if it weren't for Sun's lawsuit... .NET was not rushed - it has naturally evolved over the last 14 years, as has every language and platform in existence.
Your comments on binary compatibility are equally absurd. The reason for multiple runtimes is for side-by-side install. It's a very practical solution to the dll hell problem that used to plague windows development in the bad old days of COM. It keeps newer applications form breaking older applications. Further, it allows newer applications to use components that were compiled against older versions of the runtime... You understand that you can use win32 components from .NET and vice versa right? Why would you rewrite an existing code base? That doesn't make a lot of economic sense. That's why you can mix in match with .NET. It allows you to extend your legacy code with .NET and port as you go. This applies to MS applications as well - if it ain't broke don't fix it....
As for XCode playground... Nothing new there either. Let me introduce you to the F# interactive console that has been part of VS for quite sometime - and is a feature that will probably be available to all .NET languages in the next release of VS because of Microsoft's Roslyn (compiler as a service). The fact is that while Swift and the tooling is nice - and I'm sure will be well received by those that use XCode for their development - it is no way new or revolutionary. There is nothing wrong with that - improved tool set is improved tool set, they are just bringing development for their platform more up to date.
Sorry - but, you don't have a clue about what your talking about...
.NET was not a reaction to Objective-C or XCode - .NET was first introduced back in 2000 - long before Apple was of any real significance. To even suggest such a thing is out and out ridiculous. .NET was more a reaction to Java and the need to play better with the web. The is fact, .NET probably would not exist at all if it weren't for Sun's lawsuit... .NET was not rushed - it has naturally evolved over the last 14 years, as has every language and platform in existence.
You need to redo your computer history classes, Apple is around long before they created the iPhone, Objective-C originated in early 80's, more than 10 years before Java and 20 years before .NET. Tim Berners-Lee created the Web with Objective-C on a NeXT computer many years before Java and .NET was around. Java itself took many inspiration from Objective-C.
Your comments on binary compatibility are equally absurd. The reason for multiple runtimes is for side-by-side install. It's a very practical solution to the dll hell problem that used to plague windows development in the bad old days of COM. It keeps newer applications form breaking older applications. Further, it allows newer applications to use components that were compiled against older versions of the runtime... You understand that you can use win32 components from .NET and vice versa right? Why would you rewrite an existing code base? That doesn't make a lot of economic sense. That's why you can mix in match with .NET. It allows you to extend your legacy code with .NET and port as you go. This applies to MS applications as well - if it ain't broke don't fix it....
How absurd it is? Have you ever update a Windows new install? You've got hundreds of .NET updates because of all those concurrent runtime environment and theses updates took so much time to install because of some cache reconstruction at each individual patches. There is nothing practical in this, It's only an easy shortcut to the DLL hell created by the unstructured library environnement of Win32, which domains in objects oriented runtime like Cocoa and .NET supposed to fixe. If you are in control your runtime environment, you can and you should unified the runtime environment like Apple did with Cocoa. Instead Windows Users are stuck with all concurrent version of DLL for all concurrent runtime environment all stuck in a +8gig directory of duplicated DLL (WinSXS) and forced to apply multiple security update of the same hole for each runtime environment, not a very mobile and portable solution. Beside you can't modernize Win32 projets without porting an adapting it for .NET, you can't directly reuse Win32 apps code in .NET like it is possible with Objective-C, C, C++ and Swift in Xcode. The problem with the "if it ain't broke don't fix it" attitude is Apps that is not maintain and keep up to date to current runtime environment will eventually fail on futur system. If your apps is still using legacy and deprecated runtime environment like Win32, the death clock for your apps is ticking.
As for XCode playground... Nothing new there either. Let me introduce you to the F# interactive console that has been part of VS for quite sometime - and is a feature that will probably be available to all .NET languages in the next release of VS because of Microsoft's Roslyn (compiler as a service). The fact is that while Swift and the tooling is nice - and I'm sure will be well received by those that use XCode for their development - it is no way new or revolutionary. There is nothing wrong with that - improved tool set is improved tool set... But, it does make some of the Apple enthusiasts look a little ignorant when they run around acting like Apple has somehow revolutionized development as we know it - when in reality, they are just bringing development for their platform more up to date.
The Xcode playground is more than merely an interactive console, but as always many minimize or dismiss Apple bold technological move, like switching CPU architecture, replacing the whole OS from a non-cooperative multitasking OS to a fully certified Unix OS, and porting back the same desktop OS and IDE on mobile device. I have yet to see another computer company done as much as Apple in his history. That things being said, I do recognize there still a lot of improvement needed in most IDE, Visual Studio IDE is a UI mess, and everything that could simplified coding while boost runtime performance is a welcome improvement.
You need to redo your computer history classes, Apple is around long before they created the iPhone, Objective-C originated in early 80's, more than 10 years before Java and 20 years before .NET. Tim Berners-Lee created the Web with Objective-C on a NeXT computer many years before Java and .NET was around. Java itself took many inspiration from Objective-C.
The origin of Java has little bearing on the development of .NET. Java borrowed liberally from lots of existing languages - that is the norm for a new language... But, to say that .NET was a reaction to anything Apple was doing back in 2000 - since this was before even the first iPod, hardly anyone cared about what Apple was doing. Microsoft was investing in Java at the time - but, they created some language extensions that ticked off Sun (not going to argue the right or wrong of it). .NET was a result of that dispute.
Quote:
How absurd it is? Have you ever update a Windows new install? You've got hundreds of .NET updates because of all those concurrent runtime environment and theses updates took so much time to install because of some cache reconstruction at each patches.
What a load of rubbish... If you have a new install of windows - there won't even be more than one version of .NET installed. Vista = 3.0, Win7 = 3.5, and Windows 8 = 4.0. Any security patches or updates will happen automatically via windows update - unless you somehow think MS can magically update install media before you install it? You will only get older versions of .NET if you install 3rd party applications that need them. And again, that process is generally just wrapped into the installer for the application and updates are handled automatically via windows update.
What windows does with SxS, .NET - which isn't in SxS by the way - and the GAC is actually fairly similar to how Unix systems handle multiple versions of shared objects. DLL Hell is a problem that plagues not just windows you know....
Quote:
and forced to apply multiple security update of the same hole for each runtime environment
And this is utter BS. The user isn't forced to do anything - nor do they need to update each one individually. This happens automatically via windows update. The user doesn't have to do anything or even think about it...
Quote:
Beside you can't modernize Win32 projets without porting an adapting it for .NET, you can't directly reuse Win32 apps code in .NET like it is possible with Objective-C, C, C++ and Swift in Xcode.
I don't want to insult you - but, do you actually have any experience with .NET or Windows development? I am asking because these kinds of statements show that you are not very well informed. It's in fact quite easy to use native win32 code - as long as it exists in a dll - from .NET. I DO IT ALL THE TIME. If you want a reference, look into .NET P/Invoke.
And as for the other way, again - it's quite easy to extend a non-.NET app with .NET code. You simply create library and expose it via COM. If for some reason you can't use COM, you can either write the .NET code using C++/CLI or you can use C++/CLI to create an adapter to whatever .NET code you need to use. And you can do it all in the same app/project in VS.
I'm not even going to bother with you last paragraph. You don't like MS. You think Apple is great. That's fine.
The origin of Java has little bearing on the development of .NET. Java borrowed liberally from lots of existing languages - that is the norm for a new language... But, to say that .NET was a reaction to anything Apple was doing back in 2000 - since this was before even the first iPod, hardly anyone cared about what Apple was doing. Microsoft was investing in Java at the time - but, they created some language extensions that ticked off Sun (not going to argue the right or wrong of it). .NET was a result of that dispute.
Have you even bother to read the link I provided? not it matter much which language is based on which, but you need to at least have some knowledge on the evolution of computer sciences, your remark about Apple before 2000 let me think your are pretty young. Microsoft had some interest into NeXT in the early 90, this relationship leads to the infamous Microsoft invest in Apple in 1997 when Apple bought NeXT and bring Steve Jobs back to Apple. Also .NET copy the Cocoa nature of offering a rich GUI and medias oriented sets of APIs and runtime environment, which Java isn't. Microsoft has never consider Java as Win32 replacement like cocoa and .NET are made for.
BTW, the dispute between M$ and Sun was all about Microsoft breaking cross-compatibilty with their own Java implementation, of which ActiveX was the direct response from Microsoft of losing Java licence.
What a load of rubbish... If you have a new install of windows - there won't even be more than one version of .NET installed. Vista = 3.0, Win7 = 3.5, and Windows 8 = 4.0. Any security patches or updates will happen automatically via windows update - unless you somehow think MS can magically update install media before you install it? You will only get older versions of .NET if you install 3rd party applications that need them. And again, that process is generally just wrapped into the installer for the application and updates are handled automatically via windows update.
I don't know what profession you have. But most users I know have more than 20 third party Apps installed, most Windows power users need third party basic tools like WinZIp, Nero and other third party tools. It is no question about how easy or automated it is but more how much time consuming and how other platform have manage to avoid it and unify all this mess.
What windows does with SxS, .NET - which isn't in SxS by the way - and the GAC is actually fairly similar to how Unix systems handle multiple versions of shared objects. DLL Hell is a problem that plagues not just windows you know....
Why you don't want to look at Cocoa solutions? versioning, multi-arch binaries and domains are the keys for those kinds of problems. NeXT was the first OS to implemented it, OSX is build upon this fondation.
And this is utter BS. The user isn't forced to do anything - nor do they need to update each one individually. This happens automatically via windows update. The user doesn't have to do anything or even think about it...
Things are maybe different with Windows "touch oriented" 8.x, I don't know any professional who use it any way, but I still occasionally install Windows XP and Windows 7 PCs, and lets my tell you its a pain in a butt.
I don't want to insult you - but, do you actually have any experience with .NET or Windows development? I am asking because these kinds of statements show that you are not very well informed. It's in fact quite easy to use native win32 code - as long as it exists in a dll - from .NET. I DO IT ALL THE TIME. If you want a reference, look into .NET P/Invoke.
I won't lie to you, I'm not a .NET developer, I'm an infrastructure guys who responsible for cloud deployment of our core business SaaS (Software as a Service) solution based on asp .NET, so I've seen my share load of .NET sources while im doing tech support for our .NET guys.
And as for the other way, again - it's quite easy to extend a non-.NET app with .NET code. You simply create library and expose it via COM. If for some reason you can't use COM, you can either write the .NET code using C++/CLI or you can use C++/CLI to create an adapter to whatever .NET code you need to use. And you can do it all in the same app/project in VS.
And what about if I need to convert my win32 based code to run in native .NET, for porting an apps on Metro, Windows RT or Windows Phone 8? Because this is what Apple propose with Cocoa and Xcode and .NET meant to be. Keep in mind, Win32 is not longer supported on every Microsoft platform and this is why Windows RT is so far a failure.
I'm not even going to bother with you last paragraph. You don't like MS. You think Apple is great. That's fine.
You don't like Apple that's fine with me, why are you here? We are here to discuss about what Apple is offering new. What's the point of always being deceiving and speculating on how things won't work. I'm way more interested to learn how stuff work, and WWDC sessions is exactly that.
.NET was not a reaction to Objective-C or XCode - .NET was first introduced back in 2000 - long before Apple was of any real significance. To even suggest such a thing is out and out ridiculous. .NET was more a reaction to Java and the need to play better with the web. The is fact, .NET probably would not exist at all if it weren't for Sun's lawsuit... .NET was not rushed - it has naturally evolved over the last 14 years, as has every language and platform in existence.
+1 Gumbi,
I was a young (Unix) system & network admin back in 2000, and as I distinctively recall, the original response to Sun's Java was a product called blackbird. Blackbird failed miserably and faded away into the mist.
Have you even bother to read the link I provided? not it matter much which language is based on which, but you need to at least have some knowledge on the evolution of computer sciences, your remark about Apple before 2000 let me think your are pretty young. Microsoft had some interest into NeXT in the early 90, this relationship leads to the infamous Microsoft invest in Apple in 1997 when Apple bought NeXT and bring Steve Jobs back to Apple. Also .NET copy the Cocoa nature of offering a rich GUI and medias oriented sets of APIs and runtime environment, which Java isn't. Microsoft has never consider Java as Win32 replacement like cocoa and .NET are made for.
Microsoft invested in Apple to settle the ongoing lawsuit that Apple had brought against MS - and to bolster their position in the ongoing anti-trust actions that were being brought against them. It had nothing to do with interest in NeXT.
Further your comments about .NET, Cocoa, and Java are just strange. .NET was not positioned as a replacement for Win32, but as a complement to it to increase developer productivity and cross platform (various windows platforms - CE, 9x, NT, etc.) development. Originally, MS was embracing Java to fill this role - but, the added extensions to the language (such as delegates and an easier than JNI mechanism to interact with native code), that Sun did not take kindly to. The early .NET platform - and C# itself - were often referred to as Java clones for a reason. Similar architecture, similar class library structure, and similar seeming runtime implementation. I don't ever once remember anyone saying that .NET was a Cocoa clone...
Quote:
BTW, the dispute between M$ and Sun was all about Microsoft breaking cross-compatibilty with their own Java implementation, of which ActiveX was the direct response from Microsoft of losing Java licence.
I know what it was about - I just told you. And yes, if the extensions were enabled than compatibility with Sun's Java implementation would be broken. You could however turn them off and produce compatible code - the main problem was that VJ++ enabled these extensions by default. All that is neither here nor there really - this dispute is what directly lead to the creation of Cool (which later became C#) and the .NET platform.
ActiveX has no place in this discussion, really. ActiveX was an evolution of COM and OLE technology - it was an attempt to simplify and unite them. ActiveX came into being in 1995 or 1996 - before the Sun suit began in 1997.
Quote:
I don't know what profession you have. But most users I know have more than 20 third party Apps installed, most Windows power users need third party basic tools like WinZIp, Nero and other third party tools. It is no question about how easy or automated it is but more how much time consuming and how other platform have manage to avoid it and unify all this mess.
If you install a piece of software that happens to need an older framework you don't have, than it gets installed as part of the installation process. Why do MS haters always exaggerate this stuff. I am a professional developer. I install windows on lots of machines, both physical and virtual. Yes, it's more time consuming than say a Linux distribution - mainly because they usually contain every application known in the open source world and are usually up to date to the latest stuff because they aren't hindered by the need to ship to commercial channels. But, it's not a nightmare by any stretch of the imagination.
Quote:
Things are maybe different with Windows "touch oriented" 8.x, I don't know any professional who use it any way, but I still occasionally install Windows XP and Windows 7 PCs, and lets my tell you its a pain in a butt.
Windows XP was/is a pain in the but because it is like 14 years old - and things worked differently back then. But, Vista, 7, 8 - are pretty much the same. Windows became much easier to install with Vista - and has just gotten easier with every version...
Quote:
And what about if I need to convert my win32 based code to run in native .NET, for porting an apps on Metro, Windows RT or Windows Phone 8? Because this is what Apple propose with Cocoa and Xcode and .NET meant to be. Keep in mind, Win32 is not longer supported on every Microsoft platform and this is why Windows RT is so far a failure.
Just like anything - if you need to port than you need to port - and you might not need to since all of those platforms support native code components (yes, you will need to compile for ARM if you intend to work on RT - which might require you to make some adjustments to the source code)... I'm not go into a detailed answer to this - except to say that if your native code doesn't rely on Win32 APIs - than porting can be pretty easy. If your code does relay on Win32 APIs, than it becomes more difficult if you are going to target the Windows Store (which covers windows 8.x and Windows RT) or Windows Phone. This isn't an easy question to answer really - because it depends on the code your converting and your intended targets.
Quote:
You don't like Apple that's fine with me, why are you here? We are here to discuss about what Apple is offering new. What's the point of always being deceiving and speculating on how things won't work. I'm way more interested to learn how stuff work, and WWDC sessions is exactly that.
I don't dislike Apple. I'm not exactly a fan - but, I don't dislike them. I come here because I do like to see what they are up to - even if I don't use any Apple products myself.
Yup, that is precisely the point: there's nothing new in terms of language features, but it's new to Apple's platform, and that's what the developers at the WWDC care about.
It's laughable to read all the experts here bleating on about how none of this stuff is new; Apple never claimed it was.
I think the POWER here of Swift is making Objective C "EASIER"!!!!
So on a "phone platform" someone can code like they were using JavaScript, and get the power of a C-like language. Is this possible on another phone? Seems to me that they are opening it up to kids in high school taking an iPhone programming class along with a lot of entrepreneurs. Who knows -- maybe advanced programmers will like it too.
It will come down to the Libraries that Apple will have ready and how robust it is in the real world -- but Apple has gotten a lot more serious about not wasting time and mindshare with "bell and whistle" platforms. They don't look at competitors and just slap out a me-to product. They develop for a few years and do research and then come out with a me-too Mapping app (just kidding on the last bit).
.NET supports many languages - C#, F#, VB, JavaScript and C++. And that's just the ones from MS - there are several other languages that target .NET from 3rd parties as well. Also, you can have multiple different projects - each using a different language - mixed to create an application. Not to mention it's pretty easy to create components in .NET that can be called from non-.NET languages like unmanaged C++. It goes the other way as well - it's simple to call COM or native libraries from .NET languages. Because of this, it's not necessary to rewrite entire applications to make use of .NET - rewrites for the sake of rewriting doesn't usually make economic sense...
So, what reaction do you expect from the competition? There is nothing unique in Swift or the apple dev tools really - other than they are proprietary to Apple. With C#, it's actually possible to target iOS, OS X, and Android (using tools such as Unity or Xamarin. Can the same be said of Swift?
Understand, I'm not saying that Swift isn't a nice addition to a dev's toolkit - it's just not as revolutionary as some are making it out to be.
My 2 cents is that Apple's proprietary nature were greatly exaggeration over the years by PC manufacturers, Microsoft, and lately, by Google and its supporters. The word "proprietary" has no real meaning other than an argument to be anti-Apple.
Microsoft's C# was MS only available in Visual Studio and only years later it gained multi-platform capabilities from third parties.
Java was Sun's baby and had sued MS and won to prevent MS distribute incompatible JVMs
For years (since the original Mac II) Apple used the industry standard "NuBus" (IEEE), yet, people still called Macs "closed systems" against computers with IBM's proprietary ISA bus and Intel's proprietary PCI bus.
I find Swift's promises intriguing, and moving in the right direction. And I haven't been so excited about a new programming language since MS's ASP.NET and C#.
I have developed an application for ios7 using Objective-C. Its in development phase now. As apple has announced new programming language swift. Will it replace objective-c or both we can use for future development?
Objective C developers are generally fairly young given that the iOS SDK is young. Mac devs are a tiny part of that ecosystem.
However they may not be happy with swift. Objective C had faults with some of its syntax, the headers and old c style imports but that came with the ability to import a c project and just use it (unclear on swift) and c++ ( impossible on swift). Further although you can get interoperability in one direction, from objective C, you can't reliably in the other. Because obj c doesn't support tuples etc. So what's the point? Either don't add features new to swift or have classes and instances which can only work fully in one direction. On a large project this would have to mean the providers of swift classes not using all the features. That will probably stop existing projects from porting. New devs might.
I can see apple taking a decade to make this transition fully. I don't see them only releasing API only on swift for at least half a decade.
I don't entirely understand the hatred of headers. If they are accompanied by strong documentation, you can browse through what you're importing rather quickly.
Quote:
Originally Posted by kishu
I have developed an application for ios7 using Objective-C. Its in development phase now. As apple has announced new programming language swift. Will it replace objective-c or both we can use for future development?
There is no way to tell at this point.
Quote:
Originally Posted by arick
Guess what language Swift was written in ... JAVA!!! Now that is funny!
Objective-C had a lot in common with Java aside from the lack of static binding. What makes that funny?
Comments
:applause:
How do you do this? I have the book and the newest beta xcode yet i have no idea how to "open a chapter as a playground."
For the best experience, they would explain how to do that.
The important thing is not the language but the IDE and API on which the Apps is based on. Before .NET, Microsoft had no unified and modern IDE, .NET was a created in reaction of Objective-C and Xcode IDE. Because .NET was rushed Microsoft has screwed their first 4 versions of .NET, making every iteration of .NET binary incompatible with each other, forcing every Windows users to keeps multiple version of .NET runtime environment up to date. Still today many own Microsoft apps bundled with Windows are not ported to .NET, because Apps based on win32.dll runtime API needs rewrite to be ported on .NET.
Beside, while you can target other platform with C# and third party API (Mono), same applies to Objective-C and since Swift is part of LLVM and CLANG, it will surely be available in open source like everything else. How do you thing Apple is porting Safari and iTunes to windows, did you know before being OSX, OpenStep was NeXT Step runtime environment for running NeXT apps within Windows and Apple still use it for their own Windows apps?
I agree, there is nothing unique with the Swift language itself, but the revolution is with Xcode playground. Have you see how powerful it is to have a language that can be both compiled and interpreted? You can see actual result while you are coding, you've got an interactive playground and debugging tools nowhere seen elsewhere for a compiled runtime. All C derivatives languages are burden by C legacy, things like semicolon at each line was mandatory because of the teletype origine of C. It was really time for someone to rethink and bring a fresh start to modern programming language and development tools.
I recommend you to watch the WWDC 2014 Platforms State of the Union video, they show Xcode playground more in depth with interactive documentations, live results and visual debugger.
.NET was not a reaction to Objective-C or XCode - .NET was first introduced back in 2000 - long before Apple was of any real significance. To even suggest such a thing is out and out ridiculous. .NET was more a reaction to Java and the need to play better with the web. The is fact, .NET probably would not exist at all if it weren't for Sun's lawsuit... .NET was not rushed - it has naturally evolved over the last 14 years, as has every language and platform in existence.
Your comments on binary compatibility are equally absurd. The reason for multiple runtimes is for side-by-side install. It's a very practical solution to the dll hell problem that used to plague windows development in the bad old days of COM. It keeps newer applications form breaking older applications. Further, it allows newer applications to use components that were compiled against older versions of the runtime... You understand that you can use win32 components from .NET and vice versa right? Why would you rewrite an existing code base? That doesn't make a lot of economic sense. That's why you can mix in match with .NET. It allows you to extend your legacy code with .NET and port as you go. This applies to MS applications as well - if it ain't broke don't fix it....
As for XCode playground... Nothing new there either. Let me introduce you to the F# interactive console that has been part of VS for quite sometime - and is a feature that will probably be available to all .NET languages in the next release of VS because of Microsoft's Roslyn (compiler as a service). The fact is that while Swift and the tooling is nice - and I'm sure will be well received by those that use XCode for their development - it is no way new or revolutionary. There is nothing wrong with that - improved tool set is improved tool set, they are just bringing development for their platform more up to date.
Sorry - but, you don't have a clue about what your talking about...
.NET was not a reaction to Objective-C or XCode - .NET was first introduced back in 2000 - long before Apple was of any real significance. To even suggest such a thing is out and out ridiculous. .NET was more a reaction to Java and the need to play better with the web. The is fact, .NET probably would not exist at all if it weren't for Sun's lawsuit... .NET was not rushed - it has naturally evolved over the last 14 years, as has every language and platform in existence.
You need to redo your computer history classes, Apple is around long before they created the iPhone, Objective-C originated in early 80's, more than 10 years before Java and 20 years before .NET. Tim Berners-Lee created the Web with Objective-C on a NeXT computer many years before Java and .NET was around. Java itself took many inspiration from Objective-C.
Your comments on binary compatibility are equally absurd. The reason for multiple runtimes is for side-by-side install. It's a very practical solution to the dll hell problem that used to plague windows development in the bad old days of COM. It keeps newer applications form breaking older applications. Further, it allows newer applications to use components that were compiled against older versions of the runtime... You understand that you can use win32 components from .NET and vice versa right? Why would you rewrite an existing code base? That doesn't make a lot of economic sense. That's why you can mix in match with .NET. It allows you to extend your legacy code with .NET and port as you go. This applies to MS applications as well - if it ain't broke don't fix it....
How absurd it is? Have you ever update a Windows new install? You've got hundreds of .NET updates because of all those concurrent runtime environment and theses updates took so much time to install because of some cache reconstruction at each individual patches. There is nothing practical in this, It's only an easy shortcut to the DLL hell created by the unstructured library environnement of Win32, which domains in objects oriented runtime like Cocoa and .NET supposed to fixe. If you are in control your runtime environment, you can and you should unified the runtime environment like Apple did with Cocoa. Instead Windows Users are stuck with all concurrent version of DLL for all concurrent runtime environment all stuck in a +8gig directory of duplicated DLL (WinSXS) and forced to apply multiple security update of the same hole for each runtime environment, not a very mobile and portable solution. Beside you can't modernize Win32 projets without porting an adapting it for .NET, you can't directly reuse Win32 apps code in .NET like it is possible with Objective-C, C, C++ and Swift in Xcode. The problem with the "if it ain't broke don't fix it" attitude is Apps that is not maintain and keep up to date to current runtime environment will eventually fail on futur system. If your apps is still using legacy and deprecated runtime environment like Win32, the death clock for your apps is ticking.
As for XCode playground... Nothing new there either. Let me introduce you to the F# interactive console that has been part of VS for quite sometime - and is a feature that will probably be available to all .NET languages in the next release of VS because of Microsoft's Roslyn (compiler as a service). The fact is that while Swift and the tooling is nice - and I'm sure will be well received by those that use XCode for their development - it is no way new or revolutionary. There is nothing wrong with that - improved tool set is improved tool set... But, it does make some of the Apple enthusiasts look a little ignorant when they run around acting like Apple has somehow revolutionized development as we know it - when in reality, they are just bringing development for their platform more up to date.
The Xcode playground is more than merely an interactive console, but as always many minimize or dismiss Apple bold technological move, like switching CPU architecture, replacing the whole OS from a non-cooperative multitasking OS to a fully certified Unix OS, and porting back the same desktop OS and IDE on mobile device. I have yet to see another computer company done as much as Apple in his history. That things being said, I do recognize there still a lot of improvement needed in most IDE, Visual Studio IDE is a UI mess, and everything that could simplified coding while boost runtime performance is a welcome improvement.
The origin of Java has little bearing on the development of .NET. Java borrowed liberally from lots of existing languages - that is the norm for a new language... But, to say that .NET was a reaction to anything Apple was doing back in 2000 - since this was before even the first iPod, hardly anyone cared about what Apple was doing. Microsoft was investing in Java at the time - but, they created some language extensions that ticked off Sun (not going to argue the right or wrong of it). .NET was a result of that dispute.
What a load of rubbish... If you have a new install of windows - there won't even be more than one version of .NET installed. Vista = 3.0, Win7 = 3.5, and Windows 8 = 4.0. Any security patches or updates will happen automatically via windows update - unless you somehow think MS can magically update install media before you install it? You will only get older versions of .NET if you install 3rd party applications that need them. And again, that process is generally just wrapped into the installer for the application and updates are handled automatically via windows update.
What windows does with SxS, .NET - which isn't in SxS by the way - and the GAC is actually fairly similar to how Unix systems handle multiple versions of shared objects. DLL Hell is a problem that plagues not just windows you know....
And this is utter BS. The user isn't forced to do anything - nor do they need to update each one individually. This happens automatically via windows update. The user doesn't have to do anything or even think about it...
Beside you can't modernize Win32 projets without porting an adapting it for .NET, you can't directly reuse Win32 apps code in .NET like it is possible with Objective-C, C, C++ and Swift in Xcode.
I don't want to insult you - but, do you actually have any experience with .NET or Windows development? I am asking because these kinds of statements show that you are not very well informed. It's in fact quite easy to use native win32 code - as long as it exists in a dll - from .NET. I DO IT ALL THE TIME. If you want a reference, look into .NET P/Invoke.
And as for the other way, again - it's quite easy to extend a non-.NET app with .NET code. You simply create library and expose it via COM. If for some reason you can't use COM, you can either write the .NET code using C++/CLI or you can use C++/CLI to create an adapter to whatever .NET code you need to use. And you can do it all in the same app/project in VS.
I'm not even going to bother with you last paragraph. You don't like MS. You think Apple is great. That's fine.
The origin of Java has little bearing on the development of .NET. Java borrowed liberally from lots of existing languages - that is the norm for a new language... But, to say that .NET was a reaction to anything Apple was doing back in 2000 - since this was before even the first iPod, hardly anyone cared about what Apple was doing. Microsoft was investing in Java at the time - but, they created some language extensions that ticked off Sun (not going to argue the right or wrong of it). .NET was a result of that dispute.
Have you even bother to read the link I provided? not it matter much which language is based on which, but you need to at least have some knowledge on the evolution of computer sciences, your remark about Apple before 2000 let me think your are pretty young. Microsoft had some interest into NeXT in the early 90, this relationship leads to the infamous Microsoft invest in Apple in 1997 when Apple bought NeXT and bring Steve Jobs back to Apple. Also .NET copy the Cocoa nature of offering a rich GUI and medias oriented sets of APIs and runtime environment, which Java isn't. Microsoft has never consider Java as Win32 replacement like cocoa and .NET are made for.
BTW, the dispute between M$ and Sun was all about Microsoft breaking cross-compatibilty with their own Java implementation, of which ActiveX was the direct response from Microsoft of losing Java licence.
What a load of rubbish... If you have a new install of windows - there won't even be more than one version of .NET installed. Vista = 3.0, Win7 = 3.5, and Windows 8 = 4.0. Any security patches or updates will happen automatically via windows update - unless you somehow think MS can magically update install media before you install it? You will only get older versions of .NET if you install 3rd party applications that need them. And again, that process is generally just wrapped into the installer for the application and updates are handled automatically via windows update.
I don't know what profession you have. But most users I know have more than 20 third party Apps installed, most Windows power users need third party basic tools like WinZIp, Nero and other third party tools. It is no question about how easy or automated it is but more how much time consuming and how other platform have manage to avoid it and unify all this mess.
What windows does with SxS, .NET - which isn't in SxS by the way - and the GAC is actually fairly similar to how Unix systems handle multiple versions of shared objects. DLL Hell is a problem that plagues not just windows you know....
Why you don't want to look at Cocoa solutions? versioning, multi-arch binaries and domains are the keys for those kinds of problems. NeXT was the first OS to implemented it, OSX is build upon this fondation.
And this is utter BS. The user isn't forced to do anything - nor do they need to update each one individually. This happens automatically via windows update. The user doesn't have to do anything or even think about it...
Things are maybe different with Windows "touch oriented" 8.x, I don't know any professional who use it any way, but I still occasionally install Windows XP and Windows 7 PCs, and lets my tell you its a pain in a butt.
I don't want to insult you - but, do you actually have any experience with .NET or Windows development? I am asking because these kinds of statements show that you are not very well informed. It's in fact quite easy to use native win32 code - as long as it exists in a dll - from .NET. I DO IT ALL THE TIME. If you want a reference, look into .NET P/Invoke.
I won't lie to you, I'm not a .NET developer, I'm an infrastructure guys who responsible for cloud deployment of our core business SaaS (Software as a Service) solution based on asp .NET, so I've seen my share load of .NET sources while im doing tech support for our .NET guys.
And as for the other way, again - it's quite easy to extend a non-.NET app with .NET code. You simply create library and expose it via COM. If for some reason you can't use COM, you can either write the .NET code using C++/CLI or you can use C++/CLI to create an adapter to whatever .NET code you need to use. And you can do it all in the same app/project in VS.
And what about if I need to convert my win32 based code to run in native .NET, for porting an apps on Metro, Windows RT or Windows Phone 8? Because this is what Apple propose with Cocoa and Xcode and .NET meant to be. Keep in mind, Win32 is not longer supported on every Microsoft platform and this is why Windows RT is so far a failure.
I'm not even going to bother with you last paragraph. You don't like MS. You think Apple is great. That's fine.
You don't like Apple that's fine with me, why are you here? We are here to discuss about what Apple is offering new. What's the point of always being deceiving and speculating on how things won't work. I'm way more interested to learn how stuff work, and WWDC sessions is exactly that.
.NET was not a reaction to Objective-C or XCode - .NET was first introduced back in 2000 - long before Apple was of any real significance. To even suggest such a thing is out and out ridiculous. .NET was more a reaction to Java and the need to play better with the web. The is fact, .NET probably would not exist at all if it weren't for Sun's lawsuit... .NET was not rushed - it has naturally evolved over the last 14 years, as has every language and platform in existence.
+1 Gumbi,
I was a young (Unix) system & network admin back in 2000, and as I distinctively recall, the original response to Sun's Java was a product called blackbird. Blackbird failed miserably and faded away into the mist.
http://en.wikipedia.org/wiki/Microsoft_Blackbird
Although to go and read the wikipedia page on blackbird, I would not come away with that opinion.
Microsoft invested in Apple to settle the ongoing lawsuit that Apple had brought against MS - and to bolster their position in the ongoing anti-trust actions that were being brought against them. It had nothing to do with interest in NeXT.
Further your comments about .NET, Cocoa, and Java are just strange. .NET was not positioned as a replacement for Win32, but as a complement to it to increase developer productivity and cross platform (various windows platforms - CE, 9x, NT, etc.) development. Originally, MS was embracing Java to fill this role - but, the added extensions to the language (such as delegates and an easier than JNI mechanism to interact with native code), that Sun did not take kindly to. The early .NET platform - and C# itself - were often referred to as Java clones for a reason. Similar architecture, similar class library structure, and similar seeming runtime implementation. I don't ever once remember anyone saying that .NET was a Cocoa clone...
I know what it was about - I just told you. And yes, if the extensions were enabled than compatibility with Sun's Java implementation would be broken. You could however turn them off and produce compatible code - the main problem was that VJ++ enabled these extensions by default. All that is neither here nor there really - this dispute is what directly lead to the creation of Cool (which later became C#) and the .NET platform.
ActiveX has no place in this discussion, really. ActiveX was an evolution of COM and OLE technology - it was an attempt to simplify and unite them. ActiveX came into being in 1995 or 1996 - before the Sun suit began in 1997.
If you install a piece of software that happens to need an older framework you don't have, than it gets installed as part of the installation process. Why do MS haters always exaggerate this stuff. I am a professional developer. I install windows on lots of machines, both physical and virtual. Yes, it's more time consuming than say a Linux distribution - mainly because they usually contain every application known in the open source world and are usually up to date to the latest stuff because they aren't hindered by the need to ship to commercial channels. But, it's not a nightmare by any stretch of the imagination.
Windows XP was/is a pain in the but because it is like 14 years old - and things worked differently back then. But, Vista, 7, 8 - are pretty much the same. Windows became much easier to install with Vista - and has just gotten easier with every version...
Just like anything - if you need to port than you need to port - and you might not need to since all of those platforms support native code components (yes, you will need to compile for ARM if you intend to work on RT - which might require you to make some adjustments to the source code)... I'm not go into a detailed answer to this - except to say that if your native code doesn't rely on Win32 APIs - than porting can be pretty easy. If your code does relay on Win32 APIs, than it becomes more difficult if you are going to target the Windows Store (which covers windows 8.x and Windows RT) or Windows Phone. This isn't an easy question to answer really - because it depends on the code your converting and your intended targets.
I don't dislike Apple. I'm not exactly a fan - but, I don't dislike them. I come here because I do like to see what they are up to - even if I don't use any Apple products myself.
Yup, that is precisely the point: there's nothing new in terms of language features, but it's new to Apple's platform, and that's what the developers at the WWDC care about.
It's laughable to read all the experts here bleating on about how none of this stuff is new; Apple never claimed it was.
I think the POWER here of Swift is making Objective C "EASIER"!!!!
So on a "phone platform" someone can code like they were using JavaScript, and get the power of a C-like language. Is this possible on another phone? Seems to me that they are opening it up to kids in high school taking an iPhone programming class along with a lot of entrepreneurs. Who knows -- maybe advanced programmers will like it too.
It will come down to the Libraries that Apple will have ready and how robust it is in the real world -- but Apple has gotten a lot more serious about not wasting time and mindshare with "bell and whistle" platforms. They don't look at competitors and just slap out a me-to product. They develop for a few years and do research and then come out with a me-too Mapping app (just kidding on the last bit).
.NET supports many languages - C#, F#, VB, JavaScript and C++. And that's just the ones from MS - there are several other languages that target .NET from 3rd parties as well. Also, you can have multiple different projects - each using a different language - mixed to create an application. Not to mention it's pretty easy to create components in .NET that can be called from non-.NET languages like unmanaged C++. It goes the other way as well - it's simple to call COM or native libraries from .NET languages. Because of this, it's not necessary to rewrite entire applications to make use of .NET - rewrites for the sake of rewriting doesn't usually make economic sense...
So, what reaction do you expect from the competition? There is nothing unique in Swift or the apple dev tools really - other than they are proprietary to Apple. With C#, it's actually possible to target iOS, OS X, and Android (using tools such as Unity or Xamarin. Can the same be said of Swift?
Understand, I'm not saying that Swift isn't a nice addition to a dev's toolkit - it's just not as revolutionary as some are making it out to be.
My 2 cents is that Apple's proprietary nature were greatly exaggeration over the years by PC manufacturers, Microsoft, and lately, by Google and its supporters. The word "proprietary" has no real meaning other than an argument to be anti-Apple.
Microsoft's C# was MS only available in Visual Studio and only years later it gained multi-platform capabilities from third parties.
Java was Sun's baby and had sued MS and won to prevent MS distribute incompatible JVMs
For years (since the original Mac II) Apple used the industry standard "NuBus" (IEEE), yet, people still called Macs "closed systems" against computers with IBM's proprietary ISA bus and Intel's proprietary PCI bus.
I find Swift's promises intriguing, and moving in the right direction. And I haven't been so excited about a new programming language since MS's ASP.NET and C#.
I have developed an application for
ios7
usingObjective-C
. Its in development phase now. As apple has announced new programming languageswift
. Will it replaceobjective-c
or both we can use for future development?Guess what language Swift was written in ... JAVA!!! Now that is funny!
Objective C developers are generally fairly young given that the iOS SDK is young. Mac devs are a tiny part of that ecosystem.
However they may not be happy with swift. Objective C had faults with some of its syntax, the headers and old c style imports but that came with the ability to import a c project and just use it (unclear on swift) and c++ ( impossible on swift). Further although you can get interoperability in one direction, from objective C, you can't reliably in the other. Because obj c doesn't support tuples etc. So what's the point? Either don't add features new to swift or have classes and instances which can only work fully in one direction. On a large project this would have to mean the providers of swift classes not using all the features. That will probably stop existing projects from porting. New devs might.
I can see apple taking a decade to make this transition fully. I don't see them only releasing API only on swift for at least half a decade.
I don't entirely understand the hatred of headers. If they are accompanied by strong documentation, you can browse through what you're importing rather quickly.
I have developed an application for
ios7
usingObjective-C
. Its in development phase now. As apple has announced new programming languageswift
. Will it replaceobjective-c
or both we can use for future development?There is no way to tell at this point.
Guess what language Swift was written in ... JAVA!!! Now that is funny!
Objective-C had a lot in common with Java aside from the lack of static binding. What makes that funny?
Actually, I was wrong. The Parallel scripting language, that happens to be named Swift, is implemented in Java. Apple hasn't announced the language that was used to implement their language, which is also named Swift.