![]() |
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
Welcome to Javascript for Non-ProgrammersThanks for enrolling in class. I have been at RISD long enough to know that the JavaScript course can be a source of much angst and frustration for some students. They have told me this explicitly and without hesitation. My life has taught me that some of the best accomplishments in life come through fighting angst and frustration and not giving up. Never before has this course been so important to Web designers and developers as JavaScript has become more and more dominant as the scripting language of choice for client-side Web processing - especially as popular HTML5 features are being integrated in our Web browsers. I will do my best to motivate you so you can fight any setbacks with your full potential. I will also do my best to eliminate unnecessary angst and frustration, but I know I have a particular style that might just frustrate some of you no matter what the learning objective. My aim is to make you self-sufficient, confident, thoughtful developers and I don't think that can be done with a technical presentation and study alone. I need to give you so-called "life skills" in the process of battling new technical information. We can do this within the RISD classes with repetition through the JavaScript and PHP course content. Taking a Processing course can help too. What is JavaScript?JavaScript is a cross-platform, object-oriented scripting language. A scripting language is different from a programming language only in the level of access the language has to fundamental computing resources. A programming language accesses computing resources more directly. A scripting language accesses computing resources that have already been programmed for use. Core JavaScript contains a core set of objects (a term we'll use a lot so let's work towards understanding it better) such as
Through JavaScript's LiveConnect functionality, you can let Java and JavaScript code communicate with each other. From JavaScript, you can instantiate (make unique uses of) Java objects and access their public methods and fields. From Java, you can access JavaScript objects, properties, and methods. We will work hard in this class to understand the boldfaced words have I used above since understanding them will allow us to communicate better with each other as we write scripts (and give us a framework from which to master additional scripting languages like PHP and ActionScript). The words will also give us insight into what computers do to compute and even give us insights into how nature works to process information (performing chemical tasks according to our DNA being one of the really beautiful information processing activities in nature). The wildly successful company of 1992-95, Netscape, invented JavaScript and, as a result, JavaScript was first used in the Netscape's browsers that had huge market share during their remarkable run as a company.
Before JavaScriptBefore JavaScript, creating interactive Web pages was far more difficult — for the page designer and the hardware. Collecting and processing user data most commonly used something called a common gateway interface (CGI) script that ran on the Web server. To use a CGI script, you first design an HTML-based Web page containing forms to gather input from users. Then you create (or pay someone to create) a CGI script in C or Perl to process the gathered input on the Web server. Unfortunately, each time a user views the page and submits the form, the data travels from the Web browser to the CGI script. The CGI script then processes the data and returns any results to the user in the form of a new HTML-based Web page. This happens every time a user makes changes to the Web form, thus soaking up the server's CPU power and wasting time sending information back and forth across the Internet connection. Why Use JavaScript?JavaScript solves many of these problems by collecting and processing the data inside the browser on the user's system, although you may still need to send the processed data to a CGI script afterward. JavaScript is also an interpreted language, meaning it doesn't end up as an executable file for a specific computer. Instead, the code runs only on a JavaScript interpreter in the user's Web browser. You can write JavaScript code once, and it will work on any system with a JavaScript-capable browser (almost all browsers now that JavaScript has fully come of age) on any computing platform.As novices, we will learn much of our JavaScript by example. Thankfully, there are many insightful JavaScript libraries on the Web from which we can learn to script. As we review scripts, I will force the discussion to return to the vocabulary you've been introduced to in this welcome to class document. I will count on you all to diverge the discussion to the aspects of JavaScript that you are interested in discussing — I trust you can do that well inside and outside of class. My responsibility is to tickle your left brain as you continue the typical successful designers journey of right brain dominance. We will diagram the JavaScript scripts we use to learn such that we can tie the visual inspection of JavaScript to its computing constructs. This process will go a long way to making you successful and yet independent of any particular language. In other words, you be thinking like a scripting language designer than a basic scripting language user. We're all about design at RISD and so we'll pursue JavaScript as a design study as we use it to design our own Web presentation interactivity. JavaScript and JavaJavaScript and Java are similar in some ways but fundamentally different in others. The JavaScript language resembles Java in much of its basic syntax and control structure (which is a relatively basic similarity not worth as much as a novice might think) but differs in much of its implementation (which may seem highly technical in nature, but we can understand it on important laymen's terms). JavaScript does not have Java's static typing and strong type checking (important concepts we'll discuss together in class). In contrast to Java's compile-time system of classes built by declarations, JavaScript supports a runtime system based on a small number of data types representing numeric, Boolean, and string values. JavaScript has a prototype-based object model instead of the more common class-based object model. The prototype-based model provides dynamic inheritance; that is, what is inherited can vary for individual objects. JavaScript also supports functions without any special declarative requirements. Functions can be properties of objects, executing as loosely typed methods. JavaScript is a very free-form language compared to Java. You do not have to declare all variables, classes, and methods. You do not have to be concerned with whether methods are public, private, or protected, and you do not have to implement interfaces. Variables, parameters, and function return types are not explicitly typed. Java is a class-based programming language designed for fast execution and type safety. Type safety means, for instance, that you can't cast a Java integer into an object reference or access private memory by corrupting Java bytecodes. Java's class-based model means that programs consist exclusively of classes and their methods. Java's class inheritance and strong typing generally require tightly coupled object hierarchies. These requirements make Java programming more complex than JavaScript authoring. In contrast, JavaScript descends in spirit from a line of smaller, dynamically typed languages such as HyperTalk and dBASE. These scripting languages offer programming tools to a much wider audience because of their easier syntax, specialized built-in functionality, and minimal requirements for object creation. If we can gain an understanding of JavaScript technically up to this point in this welcome to class document, we'll have met our minimum requirements for a six week class for non-programmers. The rest of this document just reminds you that there is a lot more you could learn about JavaScript in the context of all programming and scripting languages of worth in the world. Do take a look with the spirit that you are going to be willing to stretch yourself in this class technically without beating yourself up if it doesn't stick the first time you are exposed to it. I believe that's a very important step in becoming a better Web developer -- being able to read and consider technical information to prime your brain for later learning, even when the material seems too difficult to learn right now. Don't "spin your wheels" on such technical information, just baste your brain in it a bit here and there with the motivation to want to learn it if it can make you a better Web designer and developer...
For more information on the differences between JavaScript and Java, see the chapter Details of the Object Model. JavaScript and the ECMAScript SpecificationNetscape invented JavaScript, and JavaScript was first used in Netscape browsers. However, Netscape is working with Ecma International - the European association for standardizing information and communication systems (formerly known as ECMA - the European Computer Manufacturers Association) to deliver a standardized, international programming language based on core JavaScript. This standardized version of JavaScript, called ECMAScript, behaves the same way in all applications that support the standard. Companies can use the open standard language to develop their implementation of JavaScript. The ECMAScript standard is documented in the ECMA-262 specification. The ECMA-262 standard is also approved by the ISO (International Organization for Standardization) as ISO-16262. You can find a PDF version of ECMA-262 at the Mozilla website. You can also find the specification on the Ecma International website. The ECMAScript specification does not describe the Document Object Model (DOM), which is standardized by the World Wide Web Consortium (W3C). The DOM defines the way in which HTML document objects are exposed to your script. Relationship between JavaScript Versions and ECMAScript EditionsNetscape worked closely with Ecma International to produce the ECMAScript Specification (ECMA-262). The following table describes the relationship between JavaScript versions and ECMAScript editions.
Note: ECMA-262, Edition 2 consisted of minor editorial changes and bug fixes to the Edition 1 specification. The TC39 working group of Ecma International is currently working on ECMAScript Edition 4, which will correspond to a future release of JavaScript, JavaScript 2.0.
The Core JavaScript Reference indicates which features of the language are ECMAScript-compliant. JavaScript will always include features that are not part of the ECMAScript Specification; JavaScript is compatible with ECMAScript, while providing additional features. JavaScript Documentation versus the ECMAScript SpecificationThe ECMAScript specification is a set of requirements for implementing ECMAScript; it is useful if you want to determine whether a JavaScript feature is supported in other ECMAScript implementations. If you plan to write JavaScript code that uses only features supported by ECMAScript, then you may need to review the ECMAScript specification. The ECMAScript document is not intended to help script programmers; use the JavaScript documentation for information on writing scripts. JavaScript and ECMAScript TerminologyThe ECMAScript specification uses terminology and syntax that may be unfamiliar to a JavaScript programmer. Although the description of the language may differ in ECMAScript, the language itself remains the same. JavaScript supports all functionality outlined in the ECMAScript specification. The JavaScript documentation describes aspects of the language that are appropriate for a JavaScript programmer. For example:
|
|