:: wikimiki.org ::
| IDEA |
IDEA
IDEA may refer to:
#Electronic Directory of the European Institutions
#IDEA League
#Improvement and Development Agency
#Individuals with Disabilities Education Act
#Institute for Democracy and Electoral Assistance
#Integrated Data Environments Australia
#Intelligent Database Environment for Advanced Applications
#IntelliJ IDEA - a Java IDE
#Interactive Database for Energy-efficient Architecture
#International Data Encryption Algorithm
#International Debate Education Association
#International Diving Educators Association
#International Drama/Theatre and Education Association
#Internet Delivery and Applications
#Industrial Design Excellence Awards
See also: Idea
IDEA LeagueThe IDEA League is a loose alliance of four of Europe's best technical universities. Its members are:
- Imperial College London (United Kingdom)
- TU Delft (Netherlands)
- ETH Zürich (Switzerland)
- RWTH Aachen (Germany)
Formed in 1999, the league brings together four very similar universities in Europe each with a very strong research profile and each being the largest producer of very highly qualified engineering and science graduates in their own countries.
External link
- [http://www.theidealeague.org/ IDEA League website]
Category:Lists of universities and colleges
Individuals with Disabilities Education ActThe Individuals with Disabilities Education Act (IDEA) is a United States law, most recently amended in 2004, meant to ensure "a free appropriate public education" for students with disabilities, designed to their individualized needs in the Least Restricted Environment. The act requires that public schools provide necessary learning aids, testing modifications and other educational accommodations to children with disabilities. The act also establishes due process in providing these accommodations. Children whose learning is hampered by disabilities not interfering with his/her ability to function in a general classroom, may qualify for similar accommodations under Section 504 of the Rehabilitation Act of 1973 or the Americans with Disabilities Act (ADA).
Definition of a "child with a disability"
IDEA defines "child with a disability" as including (but is not limited to) learning disabilities, mental retardation, hearing or visual impairments, speech and language impairments, serious emotional disturbance, autism, traumatic brain injury. In general, these diabilities would require modifications in the learning environment for the child to function.
Individualized Education Program
An Individualized Education Program (IEP) is created for any pupil who is found to be eligible under the state's eligibility/disability standards. The IEP is created by a team of specialists (including, but not limited to, special education teachers, general education teacher, school psychologists, and parents) that collaborate to set goals for the individual child.
Least Restricted Environment
Under IDEA, a child is entitled to a placement in his or her IEP to the least restricted environment LRE. This environment not only includes the physical location of a child's learning, but also how the child is learning. The preference is that the child be included in regular education activities as much as possible. Examples of placement in the LRE range from spending 1 or more periods a week in a separate locations receiving services such as speech and language instruction or small setting instruction with a special education teacher to placement is a special facility for children with a particular diability.
Links
[http://thomas.loc.gov/cgi-bin/query/z?c108:h.1350.enr: Individuals with Disabilities Education Improvement Act of 2004]
I
Institute for Democracy and Electoral AssistanceCreated in 1995, the International Institute for Democracy and Electoral Assistance (IDEA), an intergovernmental organization with member states from all continents, has a mandate to support sustainable democracy worldwide. IDEA operates at an interface between those who analyse and monitor trends in democracy and those who engage directly in political reform or act in support of democracy at home and abroad. IDEA works with both new and long-established democracies, helping to develop and strengthen the institutions and culture of democracy. It operates at international, regional and national level, working in partnership with a range of institutions.
Member countries are: Australia, Barbados, Belgium, Botswana, Canada, Chile, Costa Rica, Denmark, Finland, Germany, India, Mauritius, Mexico, Namibia, Netherlands, Norway, Portugal, South Africa, Spain, Sweden, and Uruguay.
Associate Members (organisations) are:
- Inter-American Institute for Human Rights (IIDH)
- International Press Institute (IPI)
- Parliamentarians for Global Action (PGA)
- Transparency International
IDEA aims to:
- Assist countries build capacity to develop and strengthen democratic institutions.
- Provide a forum for dialogue between academics, policy-makers and practitioners around the world.
Synthesize research and field experience, and develop practical tools to help improve democratic processes.
- Promote transparency, accountability and efficiency in election management.Facilitate in-country democracy assessment, monitoring and promotion by local citizens.
IDEA’s current areas of activity include:
- Democracy building and conflict management – developing the process for building consensus, setting priorities, designing political institutions and constitutions, organising dialogue and decision making, promoting reconciliation and inclusive democracy.
- Strengthening electoral processes – adapting electoral systems, improving access and turnout, ensuring professional management and independence, building public confidence.
- Developing political parties as actors in democracy – reviewing external regulation and enforcement, public funding, internal management and democracy, relations with civil society and the public.
- Political equality and participation, especially of underrepresented groups, including women in politics – identifying ways to build commitment and experience with special measures such as quotas.
IDEA uses comparative experience, analysis and extensive dialogue with practitioners to identify examples of good practice and produce tools and guidelines on democracy support. It has regular publications, an expanding web site making IDEA materials freely available, together with a range of data bases. It builds networks of experts, develops training materials and provides strategic advice on issues related to its work programme. IDEA has worked with the international democracy assistance community as well as in-country with local stakeholders in Africa, Asia, and Latin America and more recently in the Arab world and the South Caucasus.
External links
- [http://www.idea.int Institute for Democracy and Electoral Assistance]
Java programming languageJava is an object-oriented programming language developed initially by James Gosling and colleagues at Sun Microsystems. Initially called Oak (named after the oak trees outside Gosling's office), it was intended to replace C++, although the feature set better resembles that of Objective-C. Sun Microsystems currently maintains and updates Java regularly.
Specifications of the Java language, the Java Virtual Machine (JVM) and the Java API are community-maintained through the Sun-managed Java Community Process. Java was developed in 1991 by Gosling and other Sun engineers, as part of the Green Project. After first being made public in 1994, it achieved prominence following the announcement at 1995's SunWorld that Netscape would be including support for it in their Navigator browser.
Java is often confused with JavaScript, with which it shares only a similar C-like syntax.
History
syntax
Early history
The Java platform and language began as an internal project at Sun Microsystems in December of 1990. Patrick Naughton, an engineer at Sun, had become increasingly frustrated with the state of Sun's C++ and C APIs (application programming interfaces) and tools. While considering moving to NeXT, Patrick was offered a chance to work on new technology and thus the Stealth Project was started.
The Stealth Project was soon renamed to the Green Project with James Gosling and Mike Sheridan joining Patrick Naughton. They, together with some other engineers, began work in a small office on Sand Hill Road in Menlo Park, California to develop a new technology, aimed at programming next generation smart appliances such as microwaves, which Sun expected to be a big application of future technology. The team originally considered C++ as the language to use, but many of them as well as Sun's chief scientist, Bill Joy, found C++ and the available APIs problematic for several reasons.
Their platform was an embedded platform and had limited resources. Many members found that C++ was too complicated and that developers often misused it. They found C++'s lack of garbage collection a problem, as well as its lack of portable facilities for security, distributed programming, and threading. Finally, they wanted a platform that could be easily ported to all types of devices.
According to the available accounts, Bill Joy had ideas of a new language combining the best of Mesa and C. In a paper called Further, he proposed to Sun that its engineers should produce an object-oriented environment based on C++. Initially, Gosling attempted to modify and extend C++, which he referred to as C++ ++ -- , but soon abandoned that in favor of creating an entirely new language, which he called Oak after the tree that stood just outside his office.
Like many stealth projects working on new technology, the team worked long hours and by the summer of 1992, they were able to demonstrate portions of the new platform including the Green OS, the Oak language, the libraries, and the hardware. Their first attempt focused on building a PDA-like device named Star7 having a highly graphical interface and a smart agent called "Duke" to assist the user. It was demonstrated on September 3, 1992.
In November of that year, the Green Project was spun off to become FirstPerson, Inc, a wholly owned subsidiary of Sun Microsystems, and the team relocated to Palo Alto. The FirstPerson team was interested in building highly interactive devices, and when Time Warner issued an RFP for a set-top box, FirstPerson changed their target and responded with a proposal for a set-top box platform. However, the cable industry felt that their platform gave too much control to the user and FirstPerson lost their bid to SGI. An additional deal with The 3DO Company for a set-top box also failed to materialize. Unable to generate any interest within the TV industry for their platform, the company was rolled back into Sun.
Java meets the Internet
In June and July of 1994, after a three-day brainstorming session with John Gage, James Gosling, Bill Joy, Patrick Naughton, Wayne Rosing, and Eric Schmidt, the team re-targeted its efforts yet again, this time to use the technology for the Web. They felt that with the advent of the Mosaic browser, the Internet was on its way to evolving into the same highly interactive vision that they had had for the cable TV network. As a prototype, Patrick Naughton wrote a small web browser, WebRunner, later renamed HotJava.
It was also in 1994 that Oak was renamed Java. A trademark search revealed that the name Oak had already been taken by a video adaptor card manufacturer, so the team searched for a new name. The name Java was coined at a local coffee shop frequented by some of the members. It is not clear whether the name is an acronym or not. Most likely it is not, although some accounts claim that it stands for the names of James Gosling, Arthur Van Hoff, and Andy Bechtolsheim, or Just Another Vague Acronym. Lending credence to the idea that Java owes its name to the products sold at the coffee shop is the fact that the first 4 bytes of any class file spells out the words CAFE BABE if read in hexadecimal.
In October of 1994, HotJava and the Java platform was demonstrated for Sun executives. Java 1.0a was made available for download in 1994, but the first public release of Java and the HotJava web browser came on May 23, 1995, at the SunWorld conference. The announcement was made by John Gage, the Director of Science for Sun Microsystems. His announcement was accompanied by a surprise announcement by Marc Andreessen, Executive Vice President of Netscape, that Netscape would be including Java support in its browsers. In January of 1996, the JavaSoft business group was formed by Sun Microsystems to develop the technology.
Recent history
After several years of popularity, Java's place in the browser has steadily eroded. Its usage for simple interactive animations has been almost completely supplanted by Macromedia Flash, and as of 2005 it tends only to be used for more complex applications like Yahoo! Games. It has also suffered from opposition by Microsoft, which no longer plans to ship a Java platform with new versions of Internet Explorer or Windows.
By contrast, on the server-side of the Web, Java is far more popular than ever, with many websites using JavaServer Pages and other Java-based technologies in their front-ends.
On the desktop, stand-alone Java applications remain relatively unusual because of their large overhead. However, with the great advances in computer power in the last decade, along with improvements in VM and compiler quality, several have gained widespread use, including the NetBeans and Eclipse IDEs, Limewire and the Azureus BitTorrent client. Also, Matlab's latest versions (at least from 6.0 and onwards) heavily depend on Java for rendering their user interface and part of their calculation functionalities.
Version history
user interface by clicking a desktop icon or a link on a website.]]
The Java language has undergone several changes since JDK 1.0 as well as numerous additions of packages to the standard library:
- 1.0 (1996) — Initial release.
- 1.1 (1997) — Major additions, most notably the extensive retooling of the event model, as well as the introduction of inner classes.
- 1.2 (December 4, 1998) — Codename Playground. Major changes were made to the API (reflection was introduced, the Swing graphical API was integrated into the core classes etc) and to Sun's JVM (which was equipped with a JIT compiler). These had little impact on the language itself, however: the only change to the Java language was the addition of the keyword strictfp. This and subsequent releases were rebranded "Java 2", but this had no effect on any software version numbers.
- 1.3 (May 8, 2000) — Codename Kestrel. The most notable changes were: ([http://java.sun.com/j2se/1.3/docs/relnotes/features.html Full list of changes])
- HotSpot JVM introduced
- RMI was changed to be based on CORBA
- 1.4 (February 13, 2002) — Codename Merlin. As of 2004, the most widely used version. Changes included: ([http://java.sun.com/j2se/1.4.2/docs/relnotes/features.html Full list of changes])
- assert keyword.
- regular expressions modeled after Perl regular expressions
- exception chaining allows an exception to encapsulate original lower-level exception
- unblocking NIO (New IO)
- logging API
- image IO API for reading and writing images in formats like JPEG and PNG
- integrated XML parser and XSLT processor
- integrated security and cryptography extensions (JCE, JSSE, JAAS)
- 5.0 (September 29, 2004) — Codename Tiger. (Originally numbered 1.5, which is still used as the internal version number.) Added a number of significant new language features. One in particular, annotations, has been argued to be modeled on Microsoft's C#, which was itself modeled on earlier versions of Java:
- Generics — Provides compile-time type safety for collections and eliminates the need for most typecasts.
- Autoboxing/unboxing — Automatic conversions between primitive types (such as int) and wrapper types (such as Integer).
- Metadata — also called annotations, allows language constructs such as classes and methods to be tagged with additional data, which can then be processed by metadata-aware utilities
- Enumerations — the enum keyword creates a typesafe, ordered list of values (such as Day.MONDAY, Day.TUESDAY, etc.). Previously this could only be achieved by non-typesafe constant integers or manually constructed classes (typesafe enum pattern).
- Enhanced for loop — the for loop syntax is extended with special syntax for iterating over each member of an array or Collection, using a construct of the form:
for (Widget w: box)
This example iterates over box, assigning each of its items in turn to the variable w, which is then printed to standard output.
- 6.0 (currently in development, estimated release date 2006) — Codename [https://mustang.dev.java.net/ Mustang]. An early development version of the Java SDK version 6.0 (internal version number 1.6) was made available in November 2004. New builds including enhancements and bug fixes are released on a regular basis.
- 7.0 — Codename Dolphin. As of 2005, this is in the early planning stages.[http://weblogs.java.net/blog/editors/archives/2004/09/evolving_a_lang.html]
In addition to the language changes, much more dramatic changes have been made to the Java class library over the years, which has grown from a few hundred classes in version 1.0 to over three thousand in Java 5.0. Entire new APIs, such as Swing and Java2D, have been introduced, and many of the original 1.0 classes and methods have been deprecated.
Language characteristics
There were five primary goals in the creation of the Java language:
- It should use the object-oriented programming methodology.
- It should allow the same program to be executed on multiple computer platforms.
- It should contain built-in support for using computer networks.
- It should be designed to execute code from remote sources securely.
- It should be easy to use and borrow the good parts of older Object Oriented languages like C++.
Especially for the latter part, however, extensions are sometimes required, like CORBA or OSGi.
Object orientation
The first characteristic, object orientation ("OO"), refers to a method of programming and language design.
Although there are many interpretations of OO, one primary distinguishing idea is to design software so that the various types of data it manipulates are combined together with their relevant operations. Thus, data and code are combined into entities called objects. An object can be thought of as a self-contained bundle of behavior (code) and state (data). The principle is to separate the things that change from the things that stay the same; often, a change to some data structure requires a corresponding change to the code that operates on that data, or vice versa. This separation into coherent objects provides a more stable foundation for a software system's design. The intent is to make large software projects easier to manage, thus improving quality and reducing the number of failed projects.
Another primary goal of OO programming is to develop more generic objects so that software can become more reusable between projects. It is easy to see why a generic "customer" object, for example, should in theory have roughly the same basic set of behaviors between different software projects, especially when these projects overlap on some fundamental level as they often do in large organizations. In this sense, software objects can hopefully be seen more as pluggable components, helping the software industry "erect" projects largely from existing and well tested pieces, thus leading to a massive reduction in development times. However, the reality of software reusability has met with mixed results, mostly due to two difficulties: the design of truly generic objects remains a poorly-understood art, and a methodology for broad communication of reuse opportunities eludes the science. Some open source communities are now emerging whose primary mission is to help ease the reuse problem by providing authors with ways to disseminate information about generally reusable objects and object libraries.
Platform independence
components is independent of the platform it is running on]]
The second characteristic, platform independence, means that programs written in the Java language must run similarly on diverse hardware. One should be able to write a program once and run it anywhere.
This is achieved by most compilers by compiling the Java language code "halfway" to bytecode—simplified machine instructions specific to the Java platform. The code is then run on a virtual machine (VM), a program written in native code on the host hardware that interprets and executes generic Java bytecode. Further, standardized libraries are provided to allow access to features of the host machines (such as graphics, threading and networking) in unified ways. Note that, although there's an explicit compiling stage, at some point, the Java bytecode is interpreted or converted to native machine instructions by the JIT compiler.
There are also implementations of Java compilers that compile to native object code, such as GCJ, removing the intermediate bytecode stage, but the output of these compilers can only be run on a single architecture.
Sun's license for Java insists that all implementations be "compatible". This resulted in a legal dispute with Microsoft after Sun claimed that the Microsoft implementation did not support the RMI and JNI interfaces and had added platform-specific features of their own. Sun sued and won both damages (some $20 million) and a court order enforcing the terms of the license from Sun. In response, Microsoft no longer ships Java with Windows, and in recent versions of Windows, Internet Explorer cannot support Java applets without a third-party plugin. However, Sun and others have made available Java run-time systems at no cost for those and other versions of Windows.
The first implementations of the language used an interpreted virtual machine to achieve portability. These implementations produced programs that ran more slowly than programs written in C or C++, so the language suffered a reputation for poor performance. More recent JVM implementations produce programs that run significantly faster than before, using multiple techniques.
The first technique is to simply compile directly into native code like a more traditional compiler, skipping bytecodes entirely. This achieves good performance, but at the expense of portability. Another technique, known as just-in-time compilation (JIT), translates the Java bytecodes into native code at the time that the program is run. More sophisticated VMs use dynamic recompilation, in which the VM can analyze the behavior of the running program and selectively recompile and optimize critical parts of the program. These latter two techniques allow the program to take advantage of the speed of native code without losing portability.
Portability is a technically difficult goal to achieve, and Java's success at that goal has been mixed. Although it is indeed possible to write programs for the Java platform that behave consistently across many host platforms, the large number of available platforms with small errors or inconsistencies led some to parody Sun's "Write once, run anywhere" slogan as "Write once, debug everywhere".
Platform-independent Java is, however, very successful with server-side applications, such as web services, servlets, or Enterprise Java Beans - and meanwhile also with Embedded systems based on OSGi, using Embedded Java environments.
Automatic garbage collection
One possible argument against languages such as C++ is the burden of having to perform manual memory management. In C++, memory is allocated by the programmer to create an object, then deallocated to delete the object. If a programmer forgets or is unsure when to deallocate, this can lead to a memory leak, where a program consumes more and more memory without cleaning up after itself. Even worse, if a region of memory is deallocated twice, the program can become unstable and will likely crash.
In Java, this potential problem is avoided by automatic garbage collection. Objects are created and placed at an address on the heap. The program or other objects can reference an object by holding a reference to its address on the heap. When no references to an object remain, the Java garbage collector automatically deletes the object, freeing memory and preventing a memory leak. Memory leaks, however, can still occur if a programmer's code holds a reference to an object that is no longer needed—in other words, they can still occur but at higher conceptual levels. But on the whole, Java's automatic garbage collection makes creation and deletion of objects in Java simpler and potentially safer than in C++.
It should be noted, however, that programmers have access to garbage collection in C++ via smart pointers, such as the ones provided by the Boost library or as specified in the C++ committee's technical report TR1 which will be incorporated into the next C++ ISO standard.
It should also be noted that garbage collection in Java is virtually invisible to the developer. That is, developers may have no notion of when garbage collection will take place as it is not necessarily a function of the code they themselves write.
Interfaces and classes
One thing that Java accommodates is creating an interface which classes can then implement. For example, an interface can be created like this:
public interface Deleteable
This code says that any class that implements the interface Deleteable will have a method named delete(). The exact implementation and function of the method are determined by each class. There are many uses for this concept; for example, the following could be a class:
public class Fred implements Deleteable
Then, in another class, the following is legal code:
public void deleteAll (Deleteable [] list)
because any objects in the array are guaranteed to have the delete() method. The Deleteable array may contain references to Fred objects, and the deleteAll() method needn't differentiate between the Fred objects and other Deleteable objects.
The purpose is to separate the details of the implementation of the interface from the code that uses the interface. For example, the Collection interface contains methods that any collection of objects might want to implement, like retrieving or storing objects, but a specific collection could be a resizeable array, a linked list, or any of a number of different implementations.
The feature is a result of compromise. The designers of Java decided not to support multiple inheritance because of the difficulty of C++'s multiple inheritance, but interfaces give some of the benefit of multiple inheritance with, arguably, less complexity, but at the price of code redundancy (since interfaces only defines the signature of a class but cannot contain any implementation, every class inheriting an interface must provide the implementation of the defined methods, unlike in multiple inheritence, where the implementation is also inherited).
Java interfaces behave much like the concept of the Objective-C protocol.
Input/Output
Versions of Java prior to 1.4 only supported stream-based blocking I/O. This required a thread per stream being handled, as no other processing could take place while the active thread blocked waiting for input or output. This was a major scalability and performance issue for anyone needing to implement any Java network service. Since the introduction of NIO (New IO) in Java 1.4, this scalability problem has been rectified by the introduction of a non-blocking I/O framework (though there are a number of open issues in the NIO API as implemented by Sun).
The non-blocking IO framework, though considerably more complex than the original blocking IO framework, allows any number of "channels" to be handled by a single thread. The framework is based on the Reactor Pattern.
APIs
Sun has defined three platforms targeting different application environments and segmented many of its APIs so that they belong to one of the platforms. The platforms are:
- Java 2 Platform, Micro Edition — targeting environments with limited resources,
- Java 2 Platform, Standard Edition — targeting workstation environments, and
- Java 2 Platform, Enterprise Edition — targeting large distributed enterprise or Internet environments.
The classes in the Java APIs are organized into separate groups called packages. Each package contains a set of related interfaces, classes and exceptions. Refer to the separate platforms for a description of the packages available.
The set of APIs is controlled by Sun Microsystems in cooperation with others through its Java Community Process program. Companies or individuals participating in this process can influence the design and development of the APIs. This process has been a subject of controversy.
In 2004, IBM and BEA publicly supported the notion of creating an official open source implementation of Java but as of 2005, Sun Microsystems has refused that.
Hello World example
For an explanation of the tradition of programming "Hello World", see Hello world program.
// The source file must be named WorldGreeting.java
public class WorldGreeting
The above example merits a bit of explanation for those accustomed to languages with inherently relaxed security, weak typing, and weak object orientation.
- Everything in Java is written inside a class, including stand-alone programs.
- Source files are by convention named the same as the class they contain, appending the mandatory suffix .java. Classes which are declared public are required to follow this convention. (In this case, the class is WorldGreeting, therefore the source must be stored in a file called WorldGreeting.java).
- The compiler will generate a class file for each class defined in the source file. The name of the class file is the name of the class, with .class appended. For class file generation, anonymous classes are are treated as if their name was the concatenation of the name of their enclosing class, a $, and an integer.
- Programs to be executed as stand-alone must have a main() method.
- The keyword void indicates that the main() method does not return anything.
- The main method must accept an array of strings. By convention, it is referenced as "args" although any other legal variable name can be used.
- The keyword static indicates that the method is a class method, associated with the class rather than object instances. Main methods must be static.
- The keyword public denotes that a method can be called from code in other classes, or that a class may be used by classes outside the class hierarchy.
- The printing facility is part of the java standard library: The System class defines a public field called "out". The "out" object provides the method println() for displaying data to the screen (standard out).
- Standalone programs are run by giving the Java runtime the name of the class whose main() method is to be invoked. For example, at a Unix command line java -cp . WorldGreeting will start the above program (compiled into WorldGreeting.class) from the current directory. The name of the class whose main method is to be invoked can also be specified in the MANIFEST of a Java archive (jar) file.
International and worldwide use
The language distinguishes between bytes and characters. Characters are stored internally using UCS-2, although as of Java 5, the language also supports using UTF-16 via surrogates. Java program source may therefore contain any Unicode character.
The following is thus perfectly valid java code; it contains Chinese characters in the class and variable names as well as in a string literal:
public class 你好世界
Miscellaneous
Although the language has special syntax for them, arrays and strings are not primitive types: they are reference types that can be assigned to java.lang.Object.
Criticism
Java was intended to serve as a novel way to manage software complexity. Most consider Java technology to deliver reasonably well on this promise. However, Java is not without flaws, and it does not universally accommodate all programming styles, environments, or requirements.
- Not all projects or environments require enterprise-level complexity, such as stand-alone websites or sole-proprietorship programmers. Such individuals find Java's self-enforcing complexity management to be overkill.
- Java is often a focal point of discontent for those who are not enthusiastic about object-oriented programming.
- Java can be considered a less pure object-oriented programming language than for instance Ruby or Smalltalk because it makes certain compromises (such as the fact that not all values are objects) for performance reasons.
- As an established technology, Java inevitably invites comparison with contemporary languages such as C++, C#, Python, and others. Commenting upon Java's proprietary nature, supposed inflexibility to change, and growing entrenchment in the corporate sector, some have said that Java is "the new COBOL". Many consider this to be a somewhat hyperbolic assertion, although it does allude to some legitimate concerns with Java's prospects for the future.
Language issues
- The division between primitive types and objects is disliked by programmers familiar with languages such as Smalltalk and Ruby where everything is an object.
- Conversely, C++ programmers can become confused with Java because in Java primitives are always automatic variables and objects always reside on the heap, whereas C++ programmers are explicitly given the choice in both cases by means of pointers.
- Java code is often more verbose than code written in other languages due to its frequent type declarations.
- Java is predominantly a single-paradigm language. Historically, it has not been very accommodating of paradigms other than object-oriented programming. As of version 5.0, the procedural paradigm is somewhat better supported in Java with the addition of the ability to import static methods and fields so that they can be used globally as one could do in, for example, C.
- Java is a single inheritance language. This causes consternation to programmers accustomed to multiple inheritance, which is available in many other languages. However, Java employs interface classes, which are argued to address certain issues with multiple inheritance while retaining some of its benefits.
- Java does not support user-definable operator overloading, unlike C++.
- Versions of Java before 5.0 required many explicit casts to be written due to the lack of generic types.
- Java's support of text matching and manipulation is not as strong as languages such as perl or PHP, although regular expressions were introduced in J2SE 1.4.
Library issues
The look and feel of GUI applications written in Java using the Swing platform is often different from native applications. While programmers can choose to use the AWT toolkit that displays native widgets (and thus look like the operating platform), the AWT toolkit is unable to meet advanced GUI programming needs by wrapping around advanced widgets and not sacrificing portability across the various supported platforms, each of which have vastly different APIs especially for higher-level widgets. The Swing toolkit, written completely in Java, avoids this problem by reimplementing widgets using only the most basic drawing mechanisms that are guaranteed available on all platforms. The drawback is that extra effort is required to resemble the operating platform. While this is possible (using the GTK+ and Windows Look-and-Feel), most users do not know how to change the default Metal Look-And-Feel to one that resembles their native platform, and as a result they are stuck with Java applications that look radically different from their native applications. Of note however, Apple Computer's own optimized version of the Java Runtime, which is included within the Mac OS X distribution, by default implements its "Aqua" Look-And-Feel, giving Swing applications instant familiarity to Mac users.
Some parts of the standard Java libraries are considered excessively complicated, or badly designed, but cannot be changed due to the need for backward compatibility.
Performance issues
Java has obtained a reputation for slow performance, primarily because most users have targeted the Java virtual machine rather than compiling the language directly to native machine code. Using a JVM imposes a fairly large speed penalty, either spread throughout the whole program (if using an interpreter JVM) or imposed once at class loading time (if using a JIT-compiling JVM). In the latter case, the penalty is particularly noticable in programs which run for only a short time.
Whether or not modern implementations of Java are significantly slower than other languages is still hotly debated. Many argue that this is a misconception based on old benchmarks and information produced by competitors. Nevertheless, use of Java for major desktop applications still remains rare, and for highly CPU-intensive applications the language is not used at all.
A number of language features unavoidably harm performance and memory usage, even if native compilation is used:
- Garbage collection
- Array bounds checking
- Run-time type checking
Java was designed with an emphasis on security and portability, so low-level features like hardware-specific data types and pointers to arbitrary memory were deliberately omitted. In low-level applications which require these features, they must be accessed by calling C code using the Java Native Interface (JNI), which can itself be a performance bottleneck.
Java Runtime Environment
The Java Runtime Environment or JRE is the software required to run any application deployed on the Java platform. End-users commonly use a JRE in software packages and plugins. Sun also distributes a superset of the JRE called the Java 2 SDK (more commonly known as the JDK), which includes development tools such as the Java compiler, Javadoc, and debugger.
;Components of the JRE
- Java libraries - which are the compiled byte codes of source developed by the JRE implementor to support application development in Java. Examples of these libraries are:
- The core libraries, which include:
- Collection libraries which implement data structures such as lists, dictionaries, trees and sets
- XML Parsing libraries
- Security
- Internationalization and Localization libraries
- The integration libraries, which allow the application writer to communicate with external systems. These libraries include:
- The Java Database Connectivity (JDBC) API for database access
- Java Naming and Directory Interface (JNDI) for lookup and discovery
- RMI and CORBA for distributed application development
- User Interface libraries, which include:
- The (heavyweight, or native) Abstract Windowing Toolkit (AWT), which provides GUI components, the means for laying out those components and the means for handling events from those components
- The (lightweight) Swing libraries, which are built on AWT but provide (non-native) implementations of the AWT widgetry
- APIs for audio capture, processing, and playback
- A platform dependent implementation of Java virtual machine (JVM) which is the means by which the byte codes of the Java libraries and third party applications are executed
- Plugins, which enable applets to be run in web browsers
- Java Web Start, which allows Java applications to be efficiently distributed to end users across the Internet
- Licensing and documentation
Extensions and related architectures
Extensions and architectures closely tied to the Java programming language include:
- J2EE (Enterprise edition)
- J2ME (Micro-Edition for PDAs and cellular phones)
- JMF (Java Media Framework)
- JNDI (Java Naming and Directory Interface)
- JSML (Java Speech API Markup Language)
- JDBC (Java Database Connectivity)
- JDO (Java Data Objects)
- JAI (Java Advanced Imaging)
- JAIN (Java API for Integrated Networks)
- JDMK (Java Dynamic Management Kit)
- Jini (a network architecture for the construction of distributed systems)
- Jiro
- Java Card
- JavaSpaces
- Java Modeling Language (JML)
- JMI (Java Metadata Interface)
- JMX (Java Management Extensions)
- JSP (JavaServer Pages)
- JSF (JavaServer Faces)
- JNI (Java Native Interface)
- JXTA (Open Protocols for P2P Virtual Network)
- J3D (A high level API for 3D graphics programming)
- JOGL (A low level API for 3D graphics programming, using OpenGL)
- OSGi (Dynamic Service Management and Remote Maintenance)
- SuperWaba (JavaVMs for handhelds)
See also
- Java virtual machine
- Java applet
- Comparison of Java to C++
- Optimization of Java
- Java Platform Debugger Architecture
- Join Java programming language
- List of Java-programs
- Java User Group
- Java XML
- Java Servlet
- Java 2 Platform, Standard Edition (J2SE)
- List of Java scripting languages
- Javapedia
- Java Community Process
- JavaOS
- Java keywords
- zAAP (Java processor)
- Microsoft J++
References
- Jon Byous, [http://java.sun.com/features/1998/05/birthday.html Java technology: The early years]. Sun Developer Network, no date [ca. 1998]. Retrieved April 22, 2005.
- James Gosling, [http://today.java.net/jag/old/green/ A brief history of the Green project]. Java.net, no date [ca. Q1/1998]. Retrieved April 22, 2005.
- James Gosling, Bill Joy, Guy Steele, and Gilad Bracha, The Java language specification, second edition. Addison-Wesley, 2000. ISBN 0201310082.
- James Gosling, Bill Joy, Guy Steele, and Gilad Bracha, The Java language specification, third edition. Addison-Wesley, 2005. ISBN 0321246780.
- Tim Lindholm and Frank Yellin. The Java Virtual Machine specification, second edition. Addison-Wesley, 1999. ISBN 0201432943.
Notes
# The device was named Star7 after a telephone feature activated by - 7 on a telephone keypad, which enabled users to answer the telephone anywhere.
External links
Sun
- [http://java.sun.com/ Official Java home site]
- [http://java.sun.com/docs/books/jls/ The Java Language Specification, Third edition] Authoritative description of the Java language
- [http://java.sun.com/j2se/1.5.0/docs/api/ J2SE API reference, v5.0]
- [http://java.sun.com/docs/books/tutorial/ Sun's tutorial on Java Programming]
- [http://java.sun.com/docs/white/langenv/ Original Java whitepaper], 1996
- [http://www.java.com/en/download/help/testvm.xml Test your Java VM]
Alternatives
- [http://www.blackdown.org Blackdown Java] for Linux, includes Mozilla plugin
Books
- [http://www.computer-books.us/java.php Computer-Books.us] A collection of Java books available for free download
- David Flanagan, [Java in a Nutshell, Third Edition]. O'Reilly & Associates, 1999. ISBN 1565924878
- [http://www.bruceeckel.com/ Thinking in Java], by Bruce Eckel
- [http://www.vias.org/javacourse/ Java Course] The well-known book of A.B. Downey as an HTMLHelp based eBook
General
- Newsgroup [news:comp.lang.java comp.lang.java] ([http://groups.google.com/groups?group=comp.lang.java Google Groups link]), and its [http://www.ibiblio.org/javafaq/javafaq.html FAQ]
- [http://wiki.java.net/bin/view/Javapedia/ Javapedia project]
- [http://wiki.java.net/bin/view/Main/WebHome The Java Wiki]
- [http://mindprod.com/jgloss/jgloss.html A Java glossary]
- [http://www.cookienest.com/content/manual-javabasics.php Java Basics Manual]
- [http://en.pure-java.de/ Java-API with examples]
- [http://www.whizlabs.com/jwhiz.html Java Exam Preparation]
- [http://ei.cs.vt.edu/~history/Youmans.Java.html Java: Cornerstone of the Global Network Enterprise]
- [http://www.inesystems.com Sun Certification Resource ]
Historical
- [http://java.sun.com/features/1998/05/birthday.html Java(TM) Technology: The Early Years]
- [http://java.sun.com/people/jag/green/ A Brief History of the Green Project]
- [http://www.cs.umd.edu/users/seanl/stuff/java-objc.html Java Was Strongly Influenced by Objective-C]
- [http://www.wired.com/wired/archive/3.12/java.saga.html The Java Saga]
- [http://ei.cs.vt.edu/~wwwbtb/book/chap1/java_hist.html A history of Java]
Criticism
- Paul Graham, [http://www.paulgraham.com/javacover.html Java's Cover]. Paulgraham.com, April 2001.
- Simson Garfinkel, [http://www.salon.com/tech/col/garf/2001/01/08/bad_java/ Java: Slow, ugly and irrelevant]. Salon.com, January 8, 2001.
- [http://www.gnu.org/philosophy/java-trap.html Free But Shackled — The Java Trap], by Richard Stallman, April 12, 2004. ([http://today.java.net/jag/page7.html#59 James Gosling's response])
- [http://www.idinews.com/darkside.pdf The Dark Side of Java] (PDF), by Conrad Weisert, August 29, 1997. ([http://www.google.com/search?q=cache:www.idinews.com/darkside.pdf View as HTML])
- [http://www.jwz.org/doc/java.html java sucks], by Jamie Zawinski, 2000.
- [http://www.pobox.com/~schwern/papers/Why_I_Am_Not_A_Java_Programmer/why.html Why I Am Not A Java Programmer], by [http://mungus.schwern.org/~schwern/resume/resume.pdf Michael G. Schwern].
Portals, magazines, etc.
- [http://www.3java.net/ 3java.net] A comprehensive directory of Java open source software
- [http://javaopen.net/ Open Source Java] Open source Java/J2EE roundup
- [http://www.esus.com Esus.com] A site containing thousands of categorized links and Q&A's
- [http://www.jexamples.com JExamples.com] A site to find examples of Java API's
- [http://www.java-tips.org Java Tips] A site containing hundreds of categorized tips about Java API's
- [http://www.theserverside.com/ TheServerSide.com] A popular Java J2EE portal
- [http://www.javalobby.org/ Javalobby] A popular forum for Java discussions
- [http://www.java.net/ Java.Net] A site for Java articles and upcoming projects
- [http://www.onjava.com/ OnJava.com] An O'Reilly site for Java with many good articles
- [http://www.indicthreads.com/ IndicThreads.com] An upcoming portal for Java and J2EE
- [http://www.javapro.com/ JavaPro magazine] A popular Java magazine
- [http://www.java.sys-con.com/ Java Developer's Journal] Online edition of a popular Java magazine
- [http://www.javaworld.com/ JavaWorld magazine] A popular Java magazine
- [http://www.JavaKB.com/ Java KB] Offers Java discussions, news, articles, and an open source project directory.
- [http://www.javasight.com/ JavaSight.com] Java news and books.
- [http://www.javarss.com/ JavaRSS.com] A Java portal of Java websites rich in Java & J2EE News, Articles, Blogs, Groups and Forums.
- [http://www.javagamedevelopment.net/ Java Game Development] Daily news and articles on Java game development
- [http://JavaToolbox.com JavaToolbox] List of the available development tools and libraries for Java/J2EE
- [http://www.javaranch.com JavaRanch] A friendly place for Java greenhorns
- [http://www.javafree.org JavaFree] A popular Java community
- [http://www.javabeat.net JavaBeat] Java Certifications Site
- [http://www.techbookreport.com/JavaIndex.html TechBookReport] Java book and software reviews
Category:Programming languages
Category:C programming language family
Category:Java platform
Category:Java programming language
Category:Sun Microsystems
ko:자바 프로그래밍 언어
ja:Java言語
th:ภาษาจาวา
Integrated development environmentAn integrated development environment (IDE) (also known as an integrated design environment and integrated debugging environment) is computer software to help computer programmers develop software.
They normally consist of a source code editor, a compiler and/or interpreter, build-automation tools, and (usually) a debugger. Sometimes a version control system and various tools to simplify the construction of a GUI are integrated as well. Many modern IDEs also integrate a class browser, an object inspector and a class hierarchy diagram, for use with object oriented software development. Although some multiple-language IDEs are in use, such as the Eclipse IDE, NetBeans or Microsoft Visual Studio, typically an IDE is devoted to a specific programming language, as in the Visual Basic IDE.
History
IDEs initially became necessary when doing development in front of console or terminal. Early languages did not have one, since they were prepared using flowcharts, coding forms, and keypunches before being submitted to a compiler. BASIC was the first language to be created with an IDE (and was also the first to be designed for use while sitting in front of a console or terminal). Its IDE (part of the Dartmouth Time Sharing System) was command-based, and therefore didn't look much like the menu-driven, graphical IDEs of today. However it seamlessly integrated editing, file management, compilation, debugging and execution in the manner characteristic of modern IDEs.
Today, the term "IDE" is a contrast to unrelated command-line tools, such as vi, emacs, or make. While one could think of Unix as an IDE, most developers think of an IDE as being (or having the appearance of) a single program in which all development is done. This program provides typically large numbers of features for authoring, modifying, compiling, deploying and debugging software. The idea being that the IDE abstracts the configuration necessary to piece together command line utilities in a cohesive unit, which theoretically reduces the time to learn a language, and increases developer productivity. It is also thought that the tight integration of various development tasks can lead to further productivity increases (for example, code can be compiled while being written, providing instant feedback on syntax errors). While most modern IDEs are graphical, IDEs in use before the advent of windowing systems (such as Microsoft Windows or X11) were text-based, using function keys or hotkeys to perform various tasks (Turbo Pascal is a common example).
An interesting development is the emergence and popularization of Open Source IDE such as Eclipse and NetBeans in recent years. The combination of the Open Source philosophy with an open, extensible framework, encourages the creation of a community of people to extend the capabilities of the IDE, allowing even exotic languages and applications to be supported by the environment.
Visual programming
There is also growing interest in visual programming (not to be confused with Visual Basic or Visual C++). These IDEs allow users to create new applications by moving programming building blocks or code nodes to create flowcharts or structure diagrams which are then compiled or interpreted. These flowcharts often are based on the Unified Modeling Language.
This interface has been popularized with the LEGO Mindstorms system, and is being actively pursued by a number of companies wishing to capitalize on the power of custom browsers like those found at Mozilla and the power of distributed programming (cf. LabVIEW software). One of the first Visual Programming systems, Max, was modelled after analog synthesizer design and has been used to develop real-time music performance software since the 1980s.
This approach is also used in specialist software such as Openlab, where the end users want the flexibility of a full programming language, without the traditional learning curve associated with one.
Arguments
Many Linux programmers argue that the existing command-line GNU tools are in themselves an IDE, though with a different (and, some claim, superior) style of interface and under the Linux environment, many programmers still use makefiles and their derivatives. But even on Linux, graphical IDEs are becoming increasingly popular, although almost all of them are built on top of the text-based utilities (which makes them more compatible with each other somehow). Linux programs that use the standard GNU tools are easily ported to other operating systems, including Windows and Mac OS X, because most of these tools have been ported, using Cygwin or some other method like MinGW on Windows. Similarly, many Linux programmers use Emacs or Vim (an advanced text editor that seeks to provide the power of the Unix editor Vi), which integrates support for many of the standard Unix/Linux build tools in what its fans believe is an extremely elegant manner. Data Display Debugger is intended to be an advanced graphical front-end for many text-based debugger standard tools, even if Emacs itself has many plug-ins for debugging.
Under Windows, command-line tools for development are not well known, probably because Windows emphasises a graphical approach. As a result, there are multiple commercial and non-commercial solutions, but each of them has a different design and as a result they tend to have compatibility problems. That said, all the major compiler vendors for Windows provide free copies of their command-line tools, including Microsoft (Visual C++ free version, Platform SDK, Microsoft .NET Framework SDK, nmake utility), Borland (bcc32 compiler, make utility), and GNU (gcc, gdb, GNU make).
IDEs have always been popular on the Mac, going back to Macintosh Programmer's Workshop, Turbo Pascal and THINK C environments in the mid-1980s.
See also
- List of integrated development environments
- Comparison of integrated development environments
- Software development kit (SDK)
- Utility program
- Software engineering
- List of software engineering topics
- Computer-aided software engineering
- IDDE
- Rapid application development
- Read Eval Print Loop
-
ko:통합 개발 환경
ja:統合開発環境
IDEA
IDEA may refer to:
#Electronic Directory of the European Institutions
#IDEA League
#Improvement and Development Agency
#Individuals with Disabilities Education Act
#Institute for Democracy and Electoral Assistance
#Integrated Data Environments Australia
#Intelligent Database Environment for Advanced Applications
#IntelliJ IDEA - a Java IDE
#Interactive Database for Energy-efficient Architecture
#International Data Encryption Algorithm
#International Debate Education Association
#International Diving Educators Association
#International Drama/Theatre and Education Association
#Internet Delivery and Applications
#Industrial Design Excellence Awards
See also: Idea
Joshua HillThere are two people named Joshua Hill:
- Joshua Hill, the Pitcairn Island leader, 1773-1844
- Joshua Hill, American politician from Georgia
gastronomia Lektury eurotax online blackjack Nurkowanie
|
|
|
| :: RELATED NEWS :: |
Great White (film)
Great White (original title: L'Ultimo Squalo) is an Italian 1980 horror film by Enzo G. Castellari. It is infamous for plagiarizing Jaws.
The movie stars James Franciscus,
|
Enantiopure
In chemistry, two stereoisomers are said to be enantiomers if they are mirror images of each other. Much as a left and right hand are different but one is the mirror image of the other, enantiomers are stereoisomers whose molecules are nonsuperposable mirror images of each other.
Enantiomers have - when present in a symmetric environment - identical chemical and physical properties except for their
|
Shenzhen Runxun
Shenzhen Yikang (深圳易康) was a basketball team in the Chinese Basketball Association, for the 2001–2002 season, based in Qingyuan (清远). However, they finished last (and winless) and left the CBA, being relegated back to the "B" division from which they had been promoted.
They were formerly known as Shenzhen Runxun (深圳润迅), but changed names as a result of change of corporate sponsorship.
External links
- http://www.china.org.cn/chinese/zhu
|
Fundamenta Mathematica
The Fundamenta Mathematicae is a mathematical research journal with special focus on the foundations of mathematics.
It was founded in 1920 by the Polish mathematicians Sierpinski, Mazurkiewicz and Janiszewski and published in Warsaw. Today the journal is distrib
|
The Alabama
CSS Alabama was a screw sloop-of-war built for the Confederate States Navy at Birkenhead in 1862 by John Laird Sons and Company of Liverpool.
History
Launched as Enrica, it was fitted out as a cruiser and
The Highland Botanical Park is an arboretum, or tree garden. The Administrative Park Office is located at 171 Reservoir Avenue Rochester, New York, 14620 USA. In 1888, nurserymen George Ellwanger and Patrick Barry endowed the Rochester community with 20 acres (81,000 m²) of land which would become Highland Park, one of the nation's first municipal arbor
|
Hoover Wilderness
The Hoover Wilderness is a wilderness area in the Inyo and Humboldt-Toiyabe National Forests. It lies to the east of the crest of the central Sierra Nevada in
|
|
Stephen Whittle
Dr Stephen Whittle (b. 29 May 1955) is an active member of the United Kingdom TransActivist organisation Press for Change. He has been active in the transsexual community since the age of twenty, in 1975.
Whittle is a Lecturer in the School of Law at Read More... |
|