Article View: borland.public.jbuilder.java.api
Article #2071Re: Confused about terms.
From: John McGrath TeamB
Date: Tue, 05 Jun 2001 09:06
Date: Tue, 05 Jun 2001 09:06
142 lines
7409 bytes
7409 bytes
On 5 Jun 2001 00:26:32 -0700, Randall Raus wrote:
> Below are six terms that I thought I understood, but recently
> have heard used in ways that are different from my
> understanding. They were used by people who seemed to be
> very knowledgeable.
I think you have a fairly good understanding of most of these terms
(except "syntax"), but you are expecting them to be a little better
defined than they are. Usage of these terms varies somewhat, and in
some contexts the implications are a little different than in others.
> 1. Platform:
>
> The way I've understood this concept, is that a platform is the
> combination of a computer and an operating system, i.e. a PC
> running Windows is a platform, a PC running UNIX is a platform,
> a workstation running Unix is a platform. At one of the Borland
> conferences, one of the platform seminars was about Java. Has
> the ability of Java to run on any platform meant that it has
> become a platform? Java can't run a program written in C.
Perhaps a better description of "platform" is the foundation upon which
a body of software is built, and which it is tied to. That could be
just the computer if you are writing low level assembly language code.
In many cases, it refers to the operating system. If you write a
Windows program, it is built on (and tied to) Windows, not Intel.
There have been Windows implementations that ran on the DEC/Compaq
Alpha, and a Windows program would run on Windows running on either.
Java programs run on the Java platform, which consists of a Java
Virtual Machine and the core Java classes. Most Java programs are
not tied to any particular operating system or hardware, so they
are not part of the platform.
Of course, the Java platform is a body of software, and it runs on a
platform of its own. Sun supports implementations of the Java platform
that runs on Windows, Solaris and Linux. So those are the platforms on
which Sun's Java runs.
> 2. Syntax:
>
> I also heard an operating system described as having the
> ability to run applications (development tools) of different
> syntaxes. I thought a syntax was something like ASN.1. Would C++
> on a Windows platform be described as having a different syntax
> from C++ on a Linux platform.
Syntax refers to the specific tokens that makes up a language, without
regard to their meaning (the semantics). This covers
The C++ standard defines a syntax, and some implementations of C++
accept a slightly different syntax than the standard. For example, the
MS implementation of C++ has a few of its own specific keywords, so it
is different than the
GNU implementation. In general, implementations are compatible with
the standard, so if you write to the standard, your program should work
with different implementations.
> 3. Application:
>
> Also, the way I've understood it is that a development tool (see
> second line of above paragraph) is a utility that is used to
> create an application, i.e. Jbuilder 4.0 can be used to create a
> Java application. In other words, the final product is the
> application, not the development tool.
Yes. But be aware that in different environments, there are different
implications of the term "application". In many cases, calling a
program an "application" implies that it is something that will be
perceived as a separate piece of code by the user. Sometime the term
"applet" is used to refer to a piece of code that will run in the
context of another program.
In Java, it generally refers to a program that has a main() method, as
opposed to other forms of programs such as Applets, Servlets, etc. On
a Macintosh system, an "application" is a program that is linked in a
specific way, and interacts with the operating system in a given way.
Other platforms may use the term a little differently.
> 4. Operating system (interface):
>
> I didn't know that an interface is almost synonymous with
> operating system.
An operating system provides an interface (or interfaces) which
programs use. See notes on platform and API.
> 5. Portability:
> Wouldn't the operating system also have to be portable, and
> even then, wouldn't it also have to capture or find a sizable
> market niche to do anything?
A program is portable to the extent that it can be used in many
different environments. If you write code using only an appropriate
subset of the Windows APIs, it should run on any Windows system. If
you write code that uses only the Java APIs, it will run wherever Java
is supported. If you write a program using Posix Unix APIs and X11R6,
your program should run wherever that is supported.
Programs can also be "portable" in that they can be "aware" of the
environment in which they are run and adapt to that environment. For
example, I have a "portable" Java program that has a bit of code in it
that launches a web browser. While most of the code in the application
does not concern itself with the environment, that part does. It uses
different code to launch the browser under Windows that it does under
Unix.
Most real world portable programs I have dealt with contains some
code that is a little more aware of the environment than the "ideal".
This is not especially a bad thing, but it is good to limit the amount
of code that is environment-aware.
It may be that the platform that your code runs on is in itself
entirely portable, but that is seldom the case. Sun's implementation
of the Java Virtual Machine is written using C, and much of that code
is completely portable, while some is environment-aware.
> 6. API:
>
> Finally, what is an API? I thought that an application program
> interface (API) was the methods and data of a class or interface
> that was included in the Java SDK, or Java Beans. In other
> words each class or interface (in the library) had its own API.
> Recently I've heard API referred in the context of a whole
> package, like Java Beans, (e.g. the Java Beans API), or even in
> the context of a browser, i.e. Netscape, providing an API.
The term is used differently by different people / organizations. I
have seen some refer to entire libraries as an API and others refer to
a single function call as an API.
--
Regards,
John McGrath [TeamB]
---------------------------------------------------
Before sending me e-mail, please read:
http://www.JPMcGrath.net/newsgroups/e-mail.html
Technical Details
Message-ID:
<MPG.15866b0b269f037698a263@forums.borland.com>Path:
arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!newsfeed.direct.ca!look.ca!feed2.news.rcn.net!rcn!news.maxwell.syr.edu!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!dnewsReferences:
<3b1c89a8_2@dnews>Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 1089d0,3ad0d3f326530616 X-Google-Attributes: gid1089d0,public X-Google-ArrivalTime: 2001-06-05 02:15:02 PST From: John McGrath [TeamB] <ng-b@JPMcGrath.net> Newsgroups: borland.public.jbuilder.java.api Subject: Re: Confused about terms. Date: Tue, 5 Jun 2001 05:06:21 -0400 Message-ID: <MPG.15866b0b269f037698a263@forums.borland.com> References: <3b1c89a8_2@dnews> X-Newsreader: MicroPlanet Gravity v2.30 NNTP-Posting-Host: 209.92.40.60 X-Trace: dnews 991731980 209.92.40.60 (5 Jun 2001 02:06:20 -0700) Lines: 142 X-Authenticated-User: jpmcgrath Path: arc1-ca.pugleaf.net!archiver1.google.com!newsfeed.google.com!sn-xit-02!supernews.com!newsfeed.direct.ca!look.ca!feed2.news.rcn.net!rcn!news.maxwell.syr.edu!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!dnews