User:Pat Palmer/My Sandbox: Difference between revisions
imported>Pat Palmer (→Java Background Notes: revising headers) |
imported>Pat Palmer (→The programming language: more) |
||
Line 80: | Line 80: | ||
<li>Java is a language that supports <i>object oriented programming</i> | <li>Java is a language that supports <i>object oriented programming</i> | ||
<ul> | <ul> | ||
<li>the code in Java programs is always bundled into one or more | <li>the code in Java programs is always bundled into one or more ''classes''</li> | ||
<li>a class may also contain methods--the ''operations'' of the | |||
class (like functions or procedures in older languages)</li><li>a class may | class (like functions or procedures in older languages)</li> | ||
<li>a class may | |||
contain data--the fields | contain data--the fields | ||
of the class (like variables in older programming | of the class (like variables in older programming | ||
languages)</li><li>a class is the recipe, created by a programmer, for creating one or | languages)</li> | ||
more | <li>a class is the recipe, created by a programmer, for creating one or | ||
</li><li>a Java program consists of cooperating objects of different | more ''objects'' at runtime (like structs in C or C++)</li> | ||
</ul> | |||
<li>some of the classes ( | </li> | ||
application programmer</li><li>some are precompiled, from the standard Java libraries | <li>a Java program consists of cooperating objects of different | ||
(written by Sun programmers)</li><li>some are libraries that the programmer has | ''types''<ul> | ||
modified (extended)</li></ul> | <li>some of the classes (''types'') are coded by the | ||
</li><li>Java version 1.5 adheres to the | application programmer</li> | ||
<li>some are precompiled, from the standard Java libraries | |||
(written by Sun programmers)</li> | |||
<li>some are libraries that the programmer has | |||
modified (extended)</li> | |||
</ul> | |||
</li> | |||
<li>Java version 1.5 adheres to the | |||
<a href="http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html">Java | <a href="http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html">Java | ||
Language Specification</a>, 3rd Edition (<a href="http://java.sun.com/docs/books/jls/download/langspec-3.0.pdf">.pdf | Language Specification</a>, 3rd Edition (<a href="http://java.sun.com/docs/books/jls/download/langspec-3.0.pdf">.pdf |
Revision as of 10:27, 9 June 2007
This is where I work on pre-drafts and just try stuff out
I had a draft of Computer at User:Pat_Palmer/Computer.
Discussion Archives |
Archive 1, 4-9-07: here |
Archive 2, date?: here |
To Do List |
placeholder |
placeholder |
Strowger switch and telephone dialing (~1920)
- Telephone automation systems, called "switches" or switchboards, were likely among the first electromechanical devices to implement a primitive form of computer-like memory, whereby a number is stored by the setting of relays, or the operation of similar equipment. The earliest form of switching memory was the Strowger switch, developed by an independent American inventor decades before Bell Laboratories invented an equivalent technology. Strowger switches completed an additional segment of a phone call's connection each time a digit was dialed; in this case, the entire telephone system was the memory. Later switchboards (1960's generation) used general-purpose computers and completely stored all digits of the dialed number in a register before making a routing decision based on a host of complex factors. Call connections were made "all at once" after running a program that analyzed the dialed number. + Telephone automation systems, called "switches" or switchboards, were likely among the first electromechanical devices to implement a primitive form of computer-like memory, whereby a number is stored by the setting of relays, or the operation of similar equipment. The earliest form of switching memory was the Strowger switch, developed by an independent American inventor decades before Bell Laboratories invented an equivalent technology. Strowger switches completed an additional segment of a phone call's connection each time a digit was dialed; in this case, the entire telephone system was the memory. Strowger eliminated the need for intervention by a human operation when placing a phone call (in consumer terms, he "invented the dial telephone"). Later switchboards (1960's generation) used general-purpose computers and completely stored all digits of the dialed number in a register before making a routing decision based on a host of complex factors. Call connections were made "all at once" after running a program that analyzed the dialed number.
Discovery of "switching algebra" leading to logic gate designs (1938)
Claude Shannon (1916-2001) made a critical step enabling hardware design of a computer in his 1938 MIT master's thesis[1] on the use of Boole's algebra to analyse and optimise relay switching circuits. Shannon associated boolean algebra, a kind of mathematical system that had been known for centuries, with the design of logic gates in digital hardware[2], calling boolean algebra "switching algebra" in the context of digital hardware design. Shannon also later made seminal contributions towards the burgeoning field of information theory.
References
- ↑ ``A Symbolic Analysis of Relay and Switching Circuits, MIT master's thesis published in T.A.I.E.E. Vol. 57 (1938), pp. 713-723. Transactions American Institute of Electrical Engineers (1938). Retrieved on 2007-05-12.
- ↑ "Claude Shannon" from Professor Ray C. Dougherty's course notes (V61.0003) Communication: Men, Minds, and Machines (Fall, 1996). Microsoft Corporation (1996). Retrieved on 2007-05-12.
Java Background Notes
Introduction
- Java is a programming language dating from 1995 (the
year of Sun's
formal announcement)
- general-purpose, object-oriented, and cross-platform
- Java programs compile down to byte code (an intermediate language)
- byte code is handled at runtime by the Java Virtual Machine (JVM)
- Java programs are .jar (Java ARchive) files containing byte code and other stuff
- the JVM compiles byte codes into native machine instructions "on the fly" (as needed)
- Java programs execute as applications on a desktop or web server
- Java programs can execute as applets in a browser
- for safety, applets are "sandboxed" (restricted from changing the file system)
The programming language
- Java is a language that supports object oriented programming
- the code in Java programs is always bundled into one or more classes
- a class may also contain methods--the operations of the class (like functions or procedures in older languages)
- a class may contain data--the fields of the class (like variables in older programming languages)
- a class is the recipe, created by a programmer, for creating one or more objects at runtime (like structs in C or C++)
- a Java program consists of cooperating objects of different
types
- some of the classes (types) are coded by the application programmer
- some are precompiled, from the standard Java libraries (written by Sun programmers)
- some are libraries that the programmer has modified (extended)
- Java version 1.5 adheres to the <a href="http://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html">Java Language Specification</a>, 3rd Edition (<a href="http://java.sun.com/docs/books/jls/download/langspec-3.0.pdf">.pdf version</a>)
The Java virtual machine
- Java program execution is handled by a virtual machine called the Java Virtual Machine (JVM) which has been implemented on all the common operating systems
- the JVM runtime adheres to the <a href="http://java.sun.com/docs/books/vmspec/">The JavaTM Virtual Machine Specification</a>, Second Edition
- some reasons for Java's commercial success include:
- Java makes all operating system platforms approximately alike to a programmer
- Java makes application code more robust by eliminating direct pointer manipulation and by strong type checking at both compile- and run-time
- Java programs are not substantially slower than native programs
- compared to native applications, Java programs "load" more slowly
- the JVM uses JIT (just-in-time) compilation--methods are compiled to native code the first time they run (and only if they run), then are cached in memory as native code so they need not be compiled a second time during the same program execution
- Java programs run about as fast as native programs once they "warm up"
The Java Class Libraries
- also called the Base Class Library, these libraries ("packages") are available to every program written in Java, regardless of operating system platform
- ~2500 reusable classes
The Java platform<
- the "platform" consists of the Java compiler (input: source code, output: byte code for the JVM), the runtime that loads programs and JIT-compiles them at runtime, and the libraries
- the "platform" does not necessarily include an integrated development environment (IDE), although there is a version available from Sun that includes the NetBeans IDE
- many people use the open-source Eclipse IDE from IBM--I use it too
.jar files<
- Java executables typically have an extension of .jar (Java ARchive)
- .jar files contain byte codes, resources, metadata, and they may even contain source code
- when people say "component" or library, they usually mean a .jar file that does not have an entry point--it has methods that we can call, but it doesn't run "standalone"
Java compared with .NET
- Java was the model
for Microsoft when it created C# in 2002
- Java and C# code look very similar; it is fairly easy to switch between the two
- Java is cross-platform; .NET is cross-language:
- Java provides freedom from all OS differences, by making necessary cross-platform compromises; Java does not provide cross-language calling
- .NET makes 36 versions of Windows alike for programmers; it eliminates the "DLL hell" which formerly occurred when installing Windows applications
- .NET libraries can be used by any of the .NET compiled languages (of which there are dozens); libraries can be written in any .NET language
- the two platforms compete fiercely in the world wide web
- JSP's require Apache web servers (Linux or Unix); these are HTML interlaced with code
- called "servlets" if all code
- ASP's require Microsoft's IIS6 web server; these are HTML interlaced with code
- called "web handlers" if all code
- both Linux and Microsoft web servers use load-balancing across mirrored web farms to scale up
- so-called "dynamic" languages such as Ruby are seen by some as the next stage beyond Java and .NET
- it's an arms race!