Native compiled applications are what we all use every day, that word processor, this web browser. But just what is the difference between all the other systems used that are interpreted (this web blog, all those networking myspace-esque sites) even that poker game on your cellphone. What are the benefits of these different types of applciation structure? Typically in the past compiled naitive applications such as C, and its OO brothers C++ & Objective-C, Visual Basic, Delphi & SmallTalk have all been the forerunner of the application development market. But in the last 5 years new technologies such as Java, PHP, Ruby and recently .NET have all been making a real dent. Java now being considered 'the' enterprise application programming language, but what is better? a 'build once - run anywhere approach' or 'super fast with direct access to the OS'. Java and its virtual machine allows compiled byte code to be run on any operating system with a virtual machine running on it. This means code that will run on a Windows server, will also run on Linux, OSX, BSD or anything else you can think of. Of course we all know this, but what real effect does it have in a production environment? Of course the portability is unrivalled, but from my personal experience its a whole different story when actually developing a Java application and testing it properly. For example recently me and my team were developing an enterprise recruitment application to be used by a large financial institution. We built the application using Sun's Java Studio Creator, a supposed RDE (Rapid Development Environment for J2EE applications). Whilst being incredibly useful it was also utterly frustratingly slow, even on machines with over 3GB of ram and dual G5 processors. It would have taken months to develop the application traditionally using text editors, ANT and java compilers but how much more time would have it saved if the application was naitive? instead of being a pure java application. The same applies to server side applications, Java is utterly more reliable and stable and once the actual JSP (if you are using it) has been compiled once, it runs like lightning (servlets will run fast straight away). But this insn't the same with .NET, Microsoft's crossover between web / net / desktop isn't yet as stable as Java currently sits. So back to the original point, which is better? is sacrificing portability for speed and better access to underlying OS resources worth it? or is the lack of speed and higher abstraction from OS resources a worth while pass up in order to port your applications to all OS's? What do you think.
13 Responses to “Native or interpreted, which will survive?”
Leave a Reply
Search
Months
Recent Entries
- proactive forensics necessary in a decade
- High Performance Computing with CUDA
- Connection Pooling in Hibernate using C3PO.
- theReformed provides server for OSx86Scene
- Securing Data OffShore
- Shameful Plug time… ZipMyURL.com
- THEORY: Apple OSX Spaces Vulnerable
- Apple Wins by the Numbers
- MySpace Gambles Big on Lost Cause
- And From the Shadows of Confusion
Worth Reading
- XSSFilter Released - You may have already seen the news about the new XSSFilter in IE8.0 but I wanted to echo it here as well, because it’s a pretty major new release. It does a great job of preventing most of the
- The Government?s Top Hackers? - Popular Mechanics recently published an article about the NSA Red Team, which caught my interest, having been a part of that organization for a short stint back in early 2000. The article does a
- AV Industry on the Run - All too accurate cartoon from Ikarus Security Software, brought to my attention from Dancho Dankev (here), who has become one of my favorite bloggers to read.
- CitySec Updates And Now More Ways To Stalk Us! - STLSec. Shawn @ Agurasec yelled at me for not letting everyone know that St. Louis has an active CitySec meetup: The next STLSec is July 10 @ the Fox and Hound. Be there or be square. We had a
- Friday Squid Blogging: Giant Squid Found off Santa Cruz Coast - It's twenty-five feet long, with tenticles the size of human legs....
- CitiBank Card Numbers and PINS Stolen in Server Breach - Many years ago, (like ten or more) there was a major US bank (BoA, CitiBank I don’t remember) that had a major security breach. I don’t remember all the details, and Google has been less
- ARDAgent.app Vulnerability Analysis - Apple recently released Mac OS X 10.5.4 with accompanying security updates for 25 vulnerabilities. Notably absent, however, is a fix for the recently brouhaha’d ARDAgent.app local privilege
IÂ think I would have to go with the aforementioned option, speed over multi-platform dominance, Dave. .NET, although not as robust as PHP, lives inside the ‘majority’ enviroment. Portability isn’t necessary, when the primary operating system holding the majority globally already carries or is capable of gaining the components needed to execute the application DESIGNED upon a testbed for that platform.
Beyond that, looking at web applications, there are numerous amounts of ways to interpret data apart from just .NET’s proprietary enviroment, although it takes a little work. XML has done a fine job in converting/producing data for multi-platform web-applications from a singular source web application written in .NET.
From a my standpoint, in the military, we’ve had two applications written that essentially provided the same data. One built using JSP, the other in .NET by two well-respected government bulk contractors.
The JSP version had more demands for outside/third-party components than the grandfathered components already available to Windows XP. The JSP version suffered tremendous downtime and dramatically reduced our efficiency in the workplace/workflow. Importing/exporting data was imperative and the JSP model executed this quite poorly, sometimes crashing in the process or imparting itself deliberately to be held in cache beyond our attempts to refresh.
Platform independence, I don’t believe, simply can’t mean success around the arena hands down. ROI is a key here as well, multi-platform operable software will surely run a higher cost - a cost that won’t absorbed by the corporation and a cost that most assuredly be passed onto the consumer.
Yoyoyo,
Rather than Sun’s IDE, I’d recommend Eclipse instead. Much faster and comes with some native UI building blocks that speed up development *significantly*.
Server side and PC apps are not the only thing to look at nowadays. Embedded is getting more and more into the game, as you wouldn’t typically walk around with your laptop and USB antenna to make phone calls :).
Embedded apps have much more specific applications, but this arena is dominated by a nightmare of proprietary standards, protocols and hardware fights.
uCLinux now runs on ARM chips for example, is all native, but then what? The same app will not run on m68k or whatever other chip, so the cost of development (plus selection) sky-rockets.
Java may help out in this regard by having tiny vm’s available that, if necessary, even compile to native code on-the-fly (could even throw away the java lib once downloaded). It’s like having an embedded compiler that compiles once and then maintains the native code for that particular platform. Anyway, that’s one idea of doing it.
Qua language, there is immense difference in PHP or Java. PHP & Ruby & Python have these treats that the object or variable doesn’t really know what it is at compile time at least. That doesn’t help for very large and complex applications. Besides, there are now many libs available that use “reflection” to automate persistence in the database for example (hibernate).
Java has a good future ahead. People are looking into developing an OS for it right on the hardware. With JIT (and AOT), this would at least create a portable binary structure to make code-sharing and building easier at least.
Word!
G>
Interesting topic guys so let me just throw in a quick bit. As far as which will survive native or interpreted? Well both are going to surivive, but let me quit sitting on the fence here. I see more of a move toward the interpreted applications. Why you might ask, well just a few points.
The mobile society would be the major cause for this movement, the demand if you will. Not everyone can lug around a laptop or high end phone/pda, but everyone can hit the library, friends house, cafe, etc.. And for the people that do carry the laptop and others devices hitting a hotspot or having broadband access through their cell provider will give a constant feed to their apps, blog, myspace, etc..
This brings me to the technology, the fuel for this, the better high end tech and faster broadband speeds would make these applications run almost as well as native apps, depends on the type of program of course but you see my point.
Or maybe the move will shift to a more hybrid type application, bit native and a bit server side. Lots of different roads this discussion can go down but I think my vote is going to the interpreted apps as the future.
I personally think we should all get back to using punch cards to store programs on, load it all into some form of RAM and after 5 hours of feeding punch cards - hurrah we can now access the TCP stack!
As chiraz said, PHP / Ruby / Python and all the other scripted languages don’t have the powerful compiling and debugging facilities available to Java. As they are compiled at run time, its only then that the interpreter come compiler will work out there is a problem.
Hibernate and other such object persistence is changing the way server side applications are networked over time, Its only a matter of time before this level of abtraction is available to the scripted languages, and then what?
I personally think that although incredibly useful, I can never see PHP becoming *the* choice for desktop application developers. It’s foundations are just not there to support such capabilities, the same with python (but in reverse) its ultra scientific nature makes it perfect for mathematics, but as an every day application development environment its just to clunky.
Whats more interesting is JavaScript and its return to the forefront of Web 2.0! all this AJAX making an appearance recently, yeah sure its fantastic but really I still find it to be a solution without a problem. Its also become integral to Widgets for Dashboard in OSX. Who would have thought that one of the most unreliable and worst supported scripted languages would become so important after it was considered dead when flash made an appearance? now it seems that flash is old hat and javascript is for the pro’s?
which way will it turn next? websites with more than one image on it will be considered vulgar?
discuss.
Nice to see more movement in the scene, HNC : ITS ALIVE ITS ALIVE!!
“As chiraz said, PHP / Ruby / Python and all the other scripted languages don’t have the powerful compiling and debugging facilities available to Java. As they are compiled at run time, its only then that the interpreter come compiler will work out there is a problem.”
While I dont see such scripting languages as PHP, Ruby etc common on the desktop, I believe there will be a big shift in “live” applications, AJAX, RSS, XML being widely used on the desktop. The advantages that a server control system offers over a client based or native application, is that if you test thoroughly, your parser shouldnt encounter any errors or bugs. With pure client side applications, however, you cant be sure that you system will work on the host machine, its like linux, how many libs and patches and mods do you need to install something like a simple analogue clock? (Ok its alot better these days). Consumer machines are too variable to code for in a general way - IE7 still isnt ready for anything but XP/Vista, Napster To Go works with ONLY on XP SP2 with WMP 10. People want customised, fast and integrated access to all their content - essentially, they want their own personal GUI, a virtual desktop in a can so to speak.
Hello Biomech - (btw how did you find this blog? please tell me google hasn’t indexed it already! its not ready yet heh)
“its like linux, how many libs and patches and mods do you need to install something like a simple analogue clock?”
This is a classic example of why naitive is just so frustrating sometimes, especially with open source code. Library after library, hours of scouring GNU.org just to compile a scrap of some crap you can’t even remember the name of, the goal shifts from compiling your application to just getting all the right libraries installed, and then uninstalling all the pre-packaged rpm’s or pre compiled packages (distro depending) so you don’t get conflicts.
Programming is getting easier but at the same time becoming more confused with so many different technologies available and so much choice, the different toolkits and libraries available is clouding the end goal, its no longer ‘I want to create this application’ it’s now ‘I want to create this application, but which crossover of technology do I use? can someone show me what to do?’
A blank sheet of paper, or an empty whiteboard - which technologies to use? its more confusing that actually building the application.
J2EE is the biggest buzz word muddle of them all, half the people building J2EE apps don’t have a clue what J2EE actually is? its just a muddle of different protocols, frameworks and building styles. Even JavaFaces is split in two now with the Apache project having its own version as well as Sun.
Scripted languages are not always guaranteed to run, especially like within PHP you use third party unbundled libraries that are referenced by PHP like libmcrypt and IMAP, countless times I have seen badly written php.ini files that utterly screw up an application on different systems, and what is worse if you use the PEAR modules, hald the time they fall over because the installation of pear on the target server is ancient or improperly installed due to a bodged PHP installation.
So yes, portable it may be but stable is another opinion. Same with Java - very portable, no need for third party libs (unless you need to access the tcp stack in which you need lipcap installed), however can slow down to a crawl on a process heavy server.
Heh morning Shanners, I dont think Google has indexed it, I got hit with the mail from CJ this morning/tuesday, it came through a recently released website so I guess I must have put it about in his direction at some point.
Did just find this though, which I though was interesting:
http://www.amazon.com/exec/obidos/tg/detail/-/B00006BQWT/103-6064316-2226242?v=glance&url=www.hack-net.com/
Hi guys,
Interesting this topic. I agree that JavaScript is just too silly to be even mentioned a worthy language. But the cause of AJAX was to find the common denom(demon?)inator across all platforms for all browsers. Only when all the browsers implemented XMLHttpRequest did this AJAX thing really take off.
Now, if you think you have to work with JS all the time for AJAX applications, please have a look at the google web toolkit(google it, cause this comment box is not safe :). The GWT comes with a compiler from Java -> JS and programming in AJAX is much more Swing-like.
I’m loving that sort of thing. No, I am not in favor of JS that much, but this kind of innovation really creates websites that are interactive and where the browser only goes off to load something when it really matters. Result? Less DB access server-side, less work on the server, more work on the client, bigger “initial” page + .js to load when you access (see gmail).
Anyway, the point is that engineers nowadays are not interested in the “right, correct engineered” ways to do things. Whatever hack you feed to them is consumed immediately and somehow evolves into some sort of concoction that nobody has ever seen before.
And forget about J2EE. That is not dead in the water, but I believe not to stay for long.
I’ve recently had an idea to create a “distributed” VM. This is… heuristics inside the VM that serve to analyze how the application can distribute *itself* across a number of servers. So the VM would basically implement some C-code that would communicate with other VM’s and then instrument calls and other objects with Java proxies to be calling the functionality on other servers (first step). Later steps are to provide failover etc… The point of this is to create applications that provide functionality only, without having the failover and specific interfaces and what not. The JVM will distribute this application across different cluster (maybe even in a chained cluster model). May have to do with cluster computing eventually.
Doing this thing with C is really complicated. Java has the JVMTI and JNI, so development is significantly reduced. Plus it has a good specification for class files and such.
Cheers,
Chiraz
My opinion on the main question is that it should be a super fast (brevity) application that directly accesses the OS file system. ASM. or the minimal footprint for a GUI.
But then what have I done? What have I created worth a crap? well some perl.. which fall in between eh? Some Basic, that’s garbage language, that again falls on the High level..
man maybe I need to just let it go and stop fighting.
Alright, this is my last post until I see someone answer my first post:
http://www.thereformed.org/2007/03/05/christianity-secular-bias-in-the-media/
I love your intent. I love your past!
an ex-sysop of the late 1990’s. Child of the 60’s.
blesed be
“Alright, this is my last post until I see someone answer my first post:
http://www.thereformed.org/2007/03/05/christianity-secular-bias-in-the-media/”
I don’t see a post from you on that thread. Does anyone else?
My bad… Bad url or something. I am so very sorry. but I thank you for allowing me to even MAINTAIN a presence here.
Just checking, not trying to spam or nothing but does this page exist? (I see a quote at the end of yours …. e.g. an extra “)
Currently (and ScrapBooked) i get this.
that’s updated may 18th.
It’s all irrelevant, cause I wasn’t sure if you were legit, and now I see you Absolutely are!!!
My apologies in a million different ways.
http://www.thereformed.org/2007/03/05/christianity-secular-bias-in-the-media/
And further, on further thought, I would say that having a working binary vs. having a working script, makes no difference. They BOTH will survive until some operating system says that only a DICTATORSHIP can survive. and at that point in time I will just laugh.