Android—Why Dalvik?

  • Thread starter Lawrence D'Oliveiro
  • Start date
J

Joshua Cranmer

Most languages (including Java) that claim to be “portable†seem to be
implemented in C. Therefore they can only be ported to platforms where a C
compiler (or cross-compiler) is already available.

And this, dear reader, is a wonderful example of "Completely Missing the
Point."
 
J

Joshua Cranmer

Can you offer anything that works better?

I submit <language>, where <language> is your favorite interpreted
and/or bytecode-compiled language and thus deprecates the need for a
tool whose primary purpose is figuring out exactly what machine it's
running on.
That would certainly not be true with the vast majority of Free Software
written in C/C++. Which is the main kind of C/C++ code that I deal with.

I'm sure that outside of GNU or FSF-blessed programs, there are a lot of
C/C++ programs that wouldn't compile on Unix-ish-but-not-Linux
platforms, like OpenBSD or Solaris.
 
J

Joshua Cranmer

But do you count all the versions of VBA as one language? For example,
macros written for Microsoft Office 2003 do not so easily port to Office
2007 or later.

To my knowledge, the *language* hasn't changed, it's the *library*
that's changed.
 
J

Joshua Cranmer

[TIOBE’s] long-term data shows Java and C securely holding the top two
spots for the past decade.

With Java on a downward trend.
But as I noted, the TIOBE rankings are suspect. They're based on
things like advertised positions and classes, so they mostly measure
demand or perceived demand in various markets.

Which is a good basis for deciding what skills to brush up on, don’t you
think?

It is partially a metric of what employers are looking for and partially
a metric of what people are willing to learn. In that vein, you would
expect "trendy" languages--e.g., Ruby--to be overweighted and mature
languages--e.g., Java--to be underweighted. Although Java has a
confounding factor due to its widespread use as the first programming
language.

In the end, it probably doesn't matter. If you're a new entrant to the
jobs market, you should probably have the flexibility to learn any
language desired of you; if you've been in the workforce for decades,
then your domain knowledge is what will sell you and not the languages
you know.
 
L

Lawrence D'Oliveiro

I submit <language>, where <language> is your favorite interpreted
and/or bytecode-compiled language and thus deprecates the need for a
tool whose primary purpose is figuring out exactly what machine it's
running on.

You mean, the one that requires wrappers that basically reinvent the
functionality of GNU autoconf?
I'm sure that outside of GNU or FSF-blessed programs, there are a lot of
C/C++ programs that wouldn't compile on Unix-ish-but-not-Linux
platforms, like OpenBSD or Solaris.

How about this one <http://www.blender.org/>, with a million lines of C
code, last I counted. Or this one <http://dev.mysql.com/>. Or this one
<http://www.libreoffice.org/>. Or this one <http://httpd.apache.org/>.
 
L

Lawrence D'Oliveiro

To my knowledge, the *language* hasn't changed, it's the *library*
that's changed.

Bit more than that <http://en.wikipedia.org/wiki/Visual_Basic_.NET>:

... once the methods that have been moved around and that can be
automatically converted are accounted for, the basic syntax of the
language has not seen many "breaking" changes, just additions to support
new features like structured exception handling and short-circuited
expressions. Two important data type changes occurred ...

...

The things that have changed significantly are the semantics—from those
of an object-based programming language running on a deterministic,
reference-counted engine based on COM to a fully object-oriented
language backed by the .NET Framework ...

And whether you consider the “library†part of the “language†or not, either
way it’s a real source of compatibility headaches
<http://www.channelregister.co.uk/2010/01/12/office_2007_migration_problems/>.
 
L

Lawrence D'Oliveiro

In the end, it probably doesn't matter. If you're a new entrant to the
jobs market, you should probably have the flexibility to learn any
language desired of you; if you've been in the workforce for decades,
then your domain knowledge is what will sell you and not the languages
you know.

I’ve been in the workforce for decades, and I keep getting challenged to
deal with new domains, from (most recently) mobile apps and telephony, and
going further back, databases and Web development (both back-end and front-
end), multimedia, client-server networking etc.

I don’t think specialism in one domain is going to keep you employed.
 
L

Lawrence D'Oliveiro

And this, dear reader, is a wonderful example of "Completely Missing the
Point."

And this, dear reader, is a wonderful example of something that probably
made sense to him while it was still inside his head, but came out as
complete gibberish.

What did you think the “point†was, if not the portability of languages?
 
A

Arved Sandstrom

I’ve been in the workforce for decades, and I keep getting challenged to
deal with new domains, from (most recently) mobile apps and telephony, and
going further back, databases and Web development (both back-end and front-
end), multimedia, client-server networking etc.

I don’t think specialism in one domain is going to keep you employed.

What you mention are technologies. They are not domains. As I mentioned
in my previous post, domains are application domains, like engineering
or finance or health or education or aeronautics or games or image
recognition.

What you do need to do is keep up with the changing technologies. But if
you are specialized in an application domain then that will keep you
employed.

AHS
 
A

Abu Yahya

it depends...

AFAIK, the Xcode system produces binaries in the MachO format, which can
generally target multiple architectures at the same time, so it is not
entirely implausible that dual-target (OSX and iOS) binaries could be be
possible to produce (realistically, dunno, depends partly on how Xcode
works, which I have not really investigated, and I don't have a Mac
either...).

however, as-is, plain OSX apps will probably not work on iOS.

also, iOS generally needs to be "jailbreaked" to run custom apps anyways
(IIRC, prior to uploading to AppStore people run/debug their apps in an
emulator...).


Incorrect. You can use a provisioning profile to test out your app on a
real device before you upload it to the AppStore.
 
B

BGB

Incorrect. You can use a provisioning profile to test out your app on a
real device before you upload it to the AppStore.


as noted, I am not an iOS developer, so most of what I know comes from
what I had read about and heard from others. I was not aware of there
being such a provisioning profile.


actually... sadly much of what I know of the topic came from an older
smoking lady in one of the classes I was taking and who happened to
develop apps for iOS and OSX and was rather vocal about the whole matter.


meanwhile, I just recently proceeded to build my 3D engine project on
Linux via VMware, but it performs terribly as apparently there is no HW
accel, and so Mesa3D is running in software mode...

but, it is still more convenient than having to reboot into Linux (my
main OS is Windows...).

so, in any case, emulators are probably not that terrible, either way...
 
T

Tobias Blass

On 6/4/2011 10:31 AM, BGB wrote:
[snip]

Incorrect. You can use a provisioning profile to test out your app on a
real device before you upload it to the AppStore.
You should have mentioned that this provisioning profile is at least $99 per
year while you can develop on Android for free (If you want to distribute your
program over the market you pay $25 or so). The difference is that you can't
test your iOS program without this account while you can load your app on
Android for free.

I know that these fees don't really hurt companies, but they prevent hobbyists
from developing on iOS
 
B

BGB

On 6/4/2011 10:31 AM, BGB wrote:
[snip]

Incorrect. You can use a provisioning profile to test out your app on a
real device before you upload it to the AppStore.
You should have mentioned that this provisioning profile is at least $99 per
year while you can develop on Android for free (If you want to distribute your
program over the market you pay $25 or so). The difference is that you can't
test your iOS program without this account while you can load your app on
Android for free.

I know that these fees don't really hurt companies, but they prevent hobbyists
from developing on iOS

yeah...


spending money is a bit of an issue, which is a decent part of why I
don't currently target OSX... after all, one would have to spend the
teh-huge amounts of money to get an OSX-based development system, which
is just not worthwhile (unless there is some free and legal way to get a
copy of OSX to use in VMware or similar, which I doubt...).


I am feeling tempted to look into the Android SDK mostly so that I can
test my stuff against a low-resources non-x86 environment (currently my
stuff works with Windows and Linux on PCs with x86 or x86-64...).

or such...
 
A

Abu Yahya

as noted, I am not an iOS developer, so most of what I know comes from
what I had read about and heard from others. I was not aware of there
being such a provisioning profile.


actually... sadly much of what I know of the topic came from an older
smoking lady in one of the classes I was taking and who happened to
develop apps for iOS and OSX and was rather vocal about the whole matter.


meanwhile, I just recently proceeded to build my 3D engine project on
Linux via VMware, but it performs terribly as apparently there is no HW
accel, and so Mesa3D is running in software mode...

but, it is still more convenient than having to reboot into Linux (my
main OS is Windows...).

so, in any case, emulators are probably not that terrible, either way...
Emulators for hardware devices are a different matter, at least in the
case of iOS. Things may sometimes work differently, and you don't get
access to the camera or GPS from your emulator (even if you can simulate
it somehow, you'd really want to test it live before uploading it to the
AppStore).
 
L

Lawrence D'Oliveiro

You should have mentioned that this provisioning profile is at least $99
per year while you can develop on Android for free ...

This “provisioning profile†is basically just a means to keep Apple’s
devices locked down so you can’t use this channel as a back door to bypass
Apple’s App Store. It’s not designed for the convenience of the developer at
all.
 
L

Lawrence D'Oliveiro

What you mention are technologies. They are not domains. As I mentioned
in my previous post, domains are application domains, like engineering
or finance or health or education or aeronautics or games or image
recognition.

No, what you mention are themselves just technologies, not domains.
Engineering is just a collection of technologies; finance is technology
(insofar as it is mathematically-based); health is nothing without
technology these days; same with education, aeronautics, etc, etc.
 
N

Nasser M. Abbasi

No, what you mention are themselves just technologies, not domains.
Engineering is just a collection of technologies;

I think engineering is more than just technology.

You have to understand things, like stress and strain,
dynamics and control, how to solve differential and
integral equations, and many other hard subjects. It takes
many long years to understand some of these things.

Not everything in the world is a pointy and clicky
technology thing, sometimes, one has to do some pure
thinking to solve an engineering problem. Even if
one uses advanced computers, one still needs to undertand
what they are doing, else the bridge might fall.

--Nasser
 
B

BGB

Emulators for hardware devices are a different matter, at least in the
case of iOS. Things may sometimes work differently, and you don't get
access to the camera or GPS from your emulator (even if you can simulate
it somehow, you'd really want to test it live before uploading it to the
AppStore).

fair enough...


I was curious earlier, and downloaded the Android SDK, and made an
inconvenient observation:
the emulator is slow...

emulating an older version of Android, it is ok, but trying to emulate a
newer version, performance is unusably slow.


maybe a similar issue might apply to iOS, meaning that maybe the
emulated version is not an adequate representation of how it will behave
on real HW...


dunno...
 
H

H.J. Sander Bruggink

Most languages (including Java) that claim to be “portable†seem to be
implemented in C. Therefore they can only be ported to platforms where a C
compiler (or cross-compiler) is already available. Therefore,

Portability(all such languages) ⊆ Portability(C)

or even

Portability(all such languages apart from C) ⊂ Portability(C)

The fact that there exist platforms on which there is no JVM, indicates
that porting a C (or C++) program to a different platform is not simply
a recompile. There is actually a big effort involved.

C is very portable, yes, if you're writing a single-threaded,
non-networking console application. If you want the program to be
actually usable in practice, you need platform-independent libraries for
the networking, the threads, the GUI, the XML processing, etc. And once
you've decided which ones to use, the amount of platforms your C program
compiles on without a rewrite is typically /less/ than the amount of
platforms a Java program runs on.

groente
-- Sander
 
L

Lawrence D'Oliveiro

I think engineering is more than just technology.

You have to understand things, like stress and strain,
dynamics and control, how to solve differential and
integral equations, and many other hard subjects. It takes
many long years to understand some of these things.

What did you think technology was about?
Not everything in the world is a pointy and clicky
technology thing ...

Is “pointy and clicky†synonymous with “technology†to you?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,770
Messages
2,569,583
Members
45,075
Latest member
MakersCBDBloodSupport

Latest Threads

Top