Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

What is the platform independence really mean? What are the criterion to call a language platform independent ? Are cross-platform and 'platform independence' same?

(This may be a question for self study, but i would like to hear from experts from Stack overflow. There are lots of definitions and views regarding it on interenet and some of them are confusing)

share|improve this question

migrated from stackoverflow.com Jan 28 '11 at 9:01

This question came from our site for professional and enthusiast programmers.

    
I think that the term "platform indpendent" is more suitable to apply to specific programm product, not the language itself. –  zerkms Jan 24 '11 at 5:05
3  
I personally see Java as platform independent, because the JVM on each platform has to support the same set of instructions and code for any Java program (for a generic value of "any"). On the other hand, C# would be considered cross-platform in that it runs on both Mono and .NET, but not to the same degree. –  user2039 Jan 24 '11 at 5:10
1  
@Randolph you seem to forget that so much of the dotnet infrastructure is tired to windows - eg all the ui stuff. You cannot compare the platform independence of Java against dotnet+mono, its not even close. THere are so many parts called part of the standard the only problem is they onl work on Windows. Lets not forget pinvoke is scattered all over the place and use of it wont be portable. –  mP01 Jan 24 '11 at 5:21
    
Could you please explain difference between cross-platform and platform independence? –  CSharpLearner Jan 24 '11 at 5:38
    
@mP - I did not forget that at all. In fact, I thought I was quite clear when I said "not to the same degree", because of the fact that most of the UI is tied to Windows. I was NOT comparing Java against .NET and Mono, if you read carefully: I said that Java is platform independent, and .NET / Mono is cross-platform. If that's a comparison, I guess it means apples and pears should be equivalent too. Forgive me if I'm coming across as ranty, but I don't appreciate words being put into my mouth. –  user2039 Jan 24 '11 at 16:40
show 2 more comments

4 Answers

No Platform-Independence and Cross-platform are not same. lets have a look at the following explanations to understand.


Cross-platform software


cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms

It may be divided into two types.

  1. One requires individual building or compilation for each platform that it supports,
  2. And the other one can be directly run on any platform without special preparation, e.g., software written in an interpreted language or pre-compiled portable bytecode for which the interpreters or run-time packages are common or standard components of all platforms.

A Multi-platform or cross-platform software : software is available on more than one platforms (operating systems). This could mean two things -

  1. The software is provided with different builds / applications for different platforms [different packages for windows, this one for linux].
  2. The software can be run (with the same download) on multiple platforms but NOT all.

Platform Independent


Software that is platform independent does not rely on any special features of any single platform, or, if it does, handles those special features such that it can deal with multiple platforms.

Platform Independent software : Platform independent software in its strict sense means –

  • Install anywhere and run everywhere – it doesnt matter where you are. Although you may get different installers (for different platforms), this would be just for users ease. There would be options for you to install directly from the source code.




Aggregated from Different Sources

share|improve this answer
    
@Shekhar: Coincidently I too hit the same sources (Wikipedia AND openalternatives.org/site/2008/08/…) from where you may have taken the stuff. Thank you very much. –  CSharpLearner Jan 25 '11 at 5:17
    
@CSharpLearner as i mentioned at the bottom of my post –  Shekhar_Pro Jan 25 '11 at 12:35
add comment

My "gut definition" matches what Shekhar said; multiplatform == builds for many incompatible platform, platform independent == works regardless of platform.

Of course if platform == operating system that's easy to see, in that case a Python script would probably be "platform independent" as long as there's a Python interpreter on the OS you intend to run it.

In a way, the script's platform is Python. Platforms are, after all, standard stacks of software+hardware that abstract some functionality.

Not sure what my point is, though.

share|improve this answer
add comment

To expand slightly on Shekhar_Pro's answer,

Platform Independent will execute any any platform. Think of Java or Python applications without any platform specific stuff that can be executed on Windows, Mac, and Linux without necessarily recompiling or rewriting.

Cross-Platform products are a different kettle of fish entirely. Where some aspects of a cross platform product might share common requirements and even source code (for example, some math functions implemented in C), each product version is written and compiled entirely for a specific platform. Think of Mozilla Firefox, for example, which has different versions running on Mac, Windows, Linux, BeOS, Android, and so on. Each version is similar, and may even have compatible data structures, but each version is also developed independently and are often written using entirely different programming languages and APIs, different version numbering and so on.

share|improve this answer
add comment

Platform independence means, that a program written, tests and functional on one platform or operation system will work unmodified on a different platform/os. Naturally if its copied to a different directory then some small config files might need paths fixed but other than it should just work.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.