<<

( platform) From Wikipedia, the free encyclopedia Not to be confused with JavaScript. This article may require copy editing for grammar, style, cohesion, tone , or spelling. You can assist by editing it. (February 2016) Java (software platform) Dukesource125.gif The Java technology logo Original author() , Developer(s) Initial release 23 January 1996; 20 years ago[1][2] Stable release 8 Update 73 (1.8.0_73) (February 5, 2016; 34 days ago) [±][3] Preview release 9 b90 (November 2, 2015; 4 months ago) [±][4] Written in Java, ++[5] Windows, Solaris, , OS X[6] Platform Cross-platform Available in 30+ languages List of languages [show] Type Software platform License , mostly open-source,[8] with a few proprietary[9] compo nents[10] Website www.java.com Java is a of software and specifications developed by Sun Microsyst ems, later acquired by Oracle Corporation, that provides a system for developing and deploying it in a cross-platform environment . Java is used in a wide variety of computing platforms from embedded devices an mobile phones to enterprise servers and . While common, Jav a run in secure, sandboxed environments to provide many features of nati ve applications and can be embedded in HTML pages. Writing in the Java is the primary way to produce code that will be deployed as code in a Java (JVM); byte code compil ers are also available for other languages, including Ada, JavaScript, Python, a nd Ruby. In , several languages have been designed to run natively on th JVM, including Scala, and Groovy. borrows heavily from C a nd C++, but object-oriented features are modeled after and Objective-C .[11] Java eschews certain low-level constructs such as pointers and has a very simple model where every object is allocated on the and all variable s of object types are references. is handled through integrate d automatic garbage collection performed by the JVM. On November 13, 2006, Sun Microsystems made the bulk of its implementation of Ja va available under the GNU General Public License (GPL).[12][13] The latest version is Java 8, the only supported version in 2015. Contents 1 Platform 1.1 1.2 Class libraries 1.3 Languages 1.4 Similar platforms 1.5 2 History 2.1 Java meets the Web 2.2 Version history 3 Usage 3.1 Desktop use 3.2 Mobile devices 3.3 Web and enterprise use 4 Mascot 5 Licensing 5.1 6 Criticism 6.1 Generics 6.2 Unsigned types 6.3 Floating point arithmetic 6.4 Performance 6.5 Security 6.6 Adware 6.7 Redundancy 6.8 Update system 7 See also 8 References 9 External Platform The Java platform is a suite of programs that facilitate developing and running programs written in the Java programming language. A Java platform will include an engine (called a virtual machine), a and a set of librarie s; there may also be additional servers and alternative libraries that depend on the requirements. Java is not specific to any or operating system as Java platforms have been implemented for a wide variety of hardware and operatin g systems with a view to Java programs running identically on all of them. Platf orms target different classes of device and : : A technology that allows small Java-based applications (applets) to be run securely on smart cards and similar small-memory devices. Java ME (Micro Edition): Specifies several different sets of libraries (know n as profiles) for devices with limited storage, display, and power capacities. Often used to develop applications for mobile devices, PDAs, TV set- boxes, a nd printers. Java SE (Standard Edition): For general-purpose use on desktop PCs, servers and similar devices. Java EE (Enterprise Edition): Java SE plus various useful for multi-tie client–server enterprise applications. The Java platform consists of several programs, each of provides a portion of its overall capabilities. For example, the , which converts Jav a into Java (an intermediate language for the JVM), is prov ided as part of the Java Development Kit (JDK). The Java Runtime Environment (JR E), complementing the JVM with a just-in-time (JIT) compiler, converts intermedi ate bytecode into on the fly. An extensive set of libraries are also part of the Java platform. The essential components in the platform are the Java language compiler, the lib raries, and the runtime environment in which Java intermediate bytecode executes according to the rules laid out in the virtual machine specification. Java Virtual Machine Main article: Java Virtual Machine The heart of the Java platform is the concept of a "virtual machine" that execut es programs. This bytecode is the same no matter what hardware or operating system the program is running under. There is a JIT (Just In Time) com piler within the Java Virtual Machine, or JVM. The JIT compiler translates the ava bytecode into native processor instructions run-time and caches the nativ e code in memory during execution. The use of bytecode as an intermediate language permits Java programs to run on any platform that has a virtual machine available. The use of a JIT compiler mea ns that Java applications, after a short delay during loading and once they have "warmed up" by being all or mostly JIT-compiled, tend to run about as fast as n ative programs.[citation needed] Since JRE version 1.2, Sun's JVM implementation has included a just-in-time compiler instead of an . Although Java programs are cross-platform or platform independent, the code of he Java Virtual Machines (JVM) that execute these programs is not. Every support ed operating platform has its own JVM. Class libraries Main article: Java Class In most modern operating systems (OSs), a large body of reusable code is provide d to simplify the 's job. This code is typically provided as a set of dynamically loadable libraries that applications can call at runtime. Because th e Java platform is not dependent on any specific operating system, applications cannot rely on any of the pre-existing OS libraries. Instead, the Java platform provides a comprehensive set of its own standard class libraries containing much of the same reusable functions commonly found in modern operating systems. Most of the system library is also written in Java. For instance, library pain ts the user and handles the events itself, eliminating many subtle dif ferences between how different platforms handle even similar components. The Java class libraries serve three purposes within the Java platform. First, l ike other standard code libraries, the Java libraries provide the programmer a w ell-known set of functions to perform common tasks, such as maintaining lists of items or performing complex string . Second, the class libraries provide an abstract interface to tasks that would normally depend heavily on the hardwa re and operating system. Tasks such as network access and access are often heavily intertwined with the distinctive implementations of each platform. The j ava.net and java.io libraries implement an abstraction layer in native OS code, then provide a standard interface for the Java applications to perform those tas ks. Finally, when some underlying platform does not support all of the features a Java application expects, the class libraries work to gracefully handle the ab sent components, either by emulation to provide a substitute, or at least by pro viding a consistent way to check for the presence of a specific feature. Languages See also: List of JVM languages and JVM programming languages The word "Java", alone, usually refers to Java programming language that was des igned for use with the Java platform. Programming languages are typically outsid e of the of the phrase "platform", although the Java programming language was listed as a core part of the Java platform before Java 7. The language and r untime were therefore commonly considered a single unit. However, an effort was made with the Java 7 specification to clearly treat the Java language and t he Java virtual machine as separate entities, so that they are no longer conside red a single unit.[14] Third parties have produced many or interpreters that target the JVM. Some of these are for existing languages, while others are for extensions to the Java language. These include: BeanShell – A lightweight for Java[15] Clojure – A dialect of the Lisp programming language Groovy, a dynamic language with features similar to those of Python, Ruby, erl, and Smalltalk JRuby – A Ruby interpreter – A Python interpreter Kotlin – An industrial programming language for JVM with full Java interoperab ility Rhino – A JavaScript interpreter Scala – A multi-paradigm programming language designed as a "better Java" Gosu – A general-purpose Java Virtual Machine-based programming language relea under the Apache License 2.0 Similar platforms See also: Comparison of the Java and .NET platforms and Comparison of C# and Jav a The success of Java and its write once, run anywhere concept has led to other si milar efforts, notably the .NET , appearing since 2002, which incorpora tes many of the successful aspects of Java. .NET in its complete form (Microsoft 's implementation) is currently only fully available on Windows platforms, where as Java is fully available on many platforms. .NET was built from the ground-up to support multiple programming languages, while the Java platform was initially built to support only the Java language, although many other languages have bee n made for JVM since. .NET includes a Java-like language called Visual J# (formerly named J++) that is incompatible with the Java specification, and the associated class library most ly dates to the old JDK 1.1 version of the language. For these reasons, it is mo re a transitional language to switch from Java to the .NET platform, than a firs t class .NET language. Visual J# was discontinued with the release of Visual Studio 2008. The existing version shipping with Visual Studio 2005 will e supported until 2015 as per the product life-cycle strategy. Java Development Kit Main article: Java Development Kit The Java Development Kit (JDK) is a Sun product aimed at Java developers. Since the introduction of Java, it has been by far the most widely used Java kit (SDK).[citation needed] It contains a Java compiler, a full copy of the Java Runtime Environment (JRE), and many other important development too ls. History The Java platform and language began as an internal project at Sun Microsystems in December 1990, providing an alternative to the C++/C programming languages. E ngineer had become increasingly frustrated with the state of Su n's C++ and C application programming interfaces (APIs) and tools. While conside ring moving to NeXT, Naughton was offered[by whom?] a chance to work on new tech nology, and thus the Stealth Project started. The Stealth Project was soon renamed to the Green Project, with James Gosling an d Mike Sheridan joining Naughton. Together with other engineers, they began work in a small office on Sand Hill Road in Menlo Park, California. They aimed to de velop new technology for programming -generation smart appliances, which Sun expected to offer major new opportunities.[16] The team originally considered using C++, but rejected it for several reasons. B ecause they were developing an with limited resources, they deci ded that C++ needed too much memory and that its complexity led to developer err ors. The language's lack of garbage collection meant that had to man ually manage system memory, a challenging and error-prone task. The team also wo rried about the C++ language's lack of portable facilities for security, distrib uted programming, and threading. Finally, they wanted a platform that would port easily to all types of devices. had envisioned a new language combining and C. In a paper called F urther, he proposed to Sun that its engineers should produce an object-oriented environment based on C++. Initially, Gosling attempted to modify and extend C++ (a proposed development that he referred to as "C++ ++ --") but soon abandoned t hat in favor of creating a new language, which he called Oak, after the tha t stood just outside his office.[citation needed] By the summer of 1992, the team could demonstrate portions of the new platform, including the Green OS, the Oak language, the libraries, and the hardware. Their first demonstration, on September 3, 1992, focused on building a personal digit al (PDA) device named Star7[1] that had a graphical interface and a sm art agent called "Duke" to assist the user. In November of that year, the Green Project was spun off to become Firstperson, a wholly owned subsidiary of Sun Mic rosystems, and the team relocated to Palo Alto, California.[17] The Firstperson team had an interest in building highly interactive devices, and when Time Warne r issued a request for proposal (RFP) for a set-top box, Firstperson changed the ir 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; Firs tperson lost their bid to SGI. An additional deal with The 3DO Company for a set -top box also failed to materialize. Unable to generate interest within the tele vision industry, the company was rolled back into Sun. Java meets the Web In June and July 1994 – after three days of brainstorming with (the Dire ctor of Science for Sun), Gosling, Joy, Naughton, Wayne Rosing, and Schmidt – the team re-targeted the platform for the . They felt that with t he advent of graphical web browsers like the could evolve into t he same highly interactive medium that they had envisioned for cable TV. As a pr ototype, Naughton wrote a small browser, WebRunner (named after the movie Blade Runner), renamed HotJava[16] in 1995. In 1994, Sun renamed the Oak language as Java after a trademark search revealed that used the name Oak.[18] Although Java 1.0a became available f or download in 1994, the first public release of Java, Java 1.0a2 with the HotJa va browser, came on May 23, 1995, announced by Gage at the SunWorld conference. Accompanying Gage's announcement, , Executive Vice President of N etscape Communications Corporation, unexpectedly announced that browser s would include Java support. On January 9, 1996, Sun Microsystems formed the Ja vaSoft group to develop the technology.[19] Version history Main article: The Java language has undergone several changes since the release of JDK (Java D evelopment Kit) 1.0 on January 23, 1996, as well as numerous of classe s and packages to the . Since J2SE 1.4 the Java Community Proces s (JCP) has governed the evolution of the Java Language. The JCP uses Java Speci fication Requests (JSRs) to propose and specify additions and changes to the Jav a platform. The Java Language Specification (JLS) specifies the language; change s to the JLS are managed under JSR 901.[20] Sun released JDK 1.1 on February 19, 1997. Major additions included an extensive retooling of the AWT event model, inner classes added to the language, JavaBean s and JDBC. J2SE 1.2 (December 8, 1998) – Codename Playground. This and subsequent releases th rough J2SE 5.0 were rebranded Java 2 and the version name "J2SE" (Java 2 Platfor m, Standard Edition) replaced JDK to distinguish the base platform from J2EE (Ja va 2 Platform, Enterprise Edition) and J2ME (Java 2 Platform, Micro Edition). Ma jor additions included reflection, a collections framework, Java IDL (an interfa ce description language implementation for CORBA ), and the inte gration of the Swing graphical API into the core classes. A Java Plug-in was rel eased, and Sun's JVM was equipped with a JIT compiler for the first time. J2SE 1.3 (May 8, 2000) – Codename Kestrel. Notable changes included the bundling o f the HotSpot JVM (the HotSpot JVM was first released in April, 1999 for the J2S E 1.2 JVM), JavaSound, Java Naming and Directory Interface (JNDI) and Java Platf orm Architecture (JPDA). J2SE 1.4 (February 6, 2002) – Codename Merlin. This became the first release of th e Java platform developed under the as JSR 59.[21] Major changes included regular expressions modeled after , exception chaining, an integrated XML parser and XSLT processor (JAXP), and . J2SE 5.0 (September 30, 2004) – Codename Tiger. Originally numbered 1.5, which is still used as the internal version number.[22] Developed under JSR 176, Tiger ad ded several significant new language features including the for-each loop, gener ics, autoboxing and var-args.[23] Java SE 6 (December 11, 2006) – Codename Mustang. Bundled with a manager and facilitates the use of scripting languages with the JVM (such as JavaScript using 's Rhino engine). As of this version, Sun replaced the name "J2SE" with Java SE and dropped the ".0" from the version number.[24] Other major chang es include support for pluggable annotations (JSR 269), many GUI improvements, i ncluding native UI enhancements to support the of , a nd improvements to the Java Platform Debugger Architecture (JPDA) & JVM Tool Int erface for better monitoring and troubleshooting. Java SE 7 (July 28, 2011) – Codename . This version developed under JSR 336 .[25] It added many small language changes including strings in switch, try-with -resources and for generic instance creation. The JVM was extende d with support for dynamic languages, while the class library was extended among others with a join/ framework,[26] an improved new file I/O library and sup port for new network protocols such as SCTP. Java 7 Update 76 was released in Ja nuary 2015, with expiration date April 14, 2015.[27] The current version, Java SE 8 (March 18, 2014). Notable changes include languag e-level support for lambda expressions (closures) and default methods, the Proje ct Nashorn JavaScript runtime, a new Date and Time API inspired by Joda Time, an d the removal of PermGen. This version is not officially supported on the Window s XP platform.[28] However, due to the end of Java 7's lifecycle it is the recom mended version for XP users. Previously, only an unofficial manual installation method had been described for Windows XP SP3. It refers to JDK8, the developing platform for Java that also includes a fully functioning Java Runtime Environmen t.[29] In addition to language changes, significant changes have been made to the over the years, which has grown from a few hundred classes in JDK 1.0 to over three thousand in J2SE 5.0. Entire new APIs, such as Swing and , have evolved, and many of the original JDK 1.0 classes and methods have been deprecated. Usage Desktop use According to Oracle, the Java Runtime Environment is found on over 850 million P Cs.[30] Microsoft has not bundled a Java Runtime Environment (JRE) with its oper ating systems since Sun Microsystems sued Microsoft for adding Windows-specific classes to the bundled Java runtime environment, and for making the new classes available through Visual J++.[citation needed] Apple no longer includes a Java r untime with OS X as of version 10.7, but the system prompts the user to download and install it the first time an application requiring the JRE is launched.[cit ation needed] Many Linux distributions include the partially compatible free sof tware package GNU [31] and increasingly mostly compatible IcedTea. Some Java applications are in fairly widespread desktop use, including the NetBe ans and integrated development environments, and file sharing clients su ch as LimeWire and . Java is also used in the MATLAB mathematics programming environment, both for rendering the and as part of the core syst em. Java provides cross platform user interface for some high end collaborative applications like Lotus Notes. Mobile devices This section does not cite any sources. Please help improve this section by adding citations to reliable sources. Unsourced material may be challenged a nd removed. (October 2015) Java ME has become popular in mobile devices, where it competes with , BR EW, and the .NET Compact Framework. The diversity of mobile phone manufacturers has led to a need for new unified st andards so programs can run on phones from different suppliers – MIDP. The first s tandard was MIDP 1, which assumed a small screen size, no access to audio, and a 32kB program limit. The more recent MIDP 2 allows access to audio, and up to 64 kB for the program size. With handset designs improving more rapidly than the st andards, some manufacturers relax some limitations in the standards, for example , maximum program size. 's Android operating system uses the Java language, but not its class libr aries, therefore the Android platform cannot be called Java. Android executes th e code on the ART VM (formerly the VM up to Android 4.4.4) instead of the Java VM. and enterprise use The Java platform has become a mainstay of enterprise IT development since the i ntroduction of the Enterprise Edition in 1998, in two different ways: Through the coupling of Java to the web server, the Java platform has become a leading platform for integrating the Web with enterprise backend systems. Thi s has allowed companies to move part or all of their business to the Internet en vironment by way of highly interactive online environments (such as highly dynam ic websites) that allow the customer direct access to the business processes (e. g. online banking websites, airline booking systems and so on). This trend has c ontinued from its initial Web-based start: The Java platform has matured into an Enterprise Integration role in whi ch legacy systems are unlocked to the outside world through bridges built on the Java platform. This trend has been supported for Java platform support for EAI standards like messaging and Web services and has fueled the inclusion of the Ja va platform as a development basis in such standards as SCA, XAM and others. Java has become the standard development platform for many companies' IT departments, which do most or all of their corporate development in Java. This type of development is usually related to company-specific tooling (e.g. a booki ng tool for an airline) and the choice for the Java platform is often driven by a desire to leverage the existing Java infrastructure to build highly intelligen t and interconnected tools. The Java platform has become the main development platform for many software tools and platforms that are produced by third-party software groups (commercia l, open source and hybrid) and are used as configurable (rather than programmabl e) tools by companies. Examples in this category include Web servers, applicatio n servers, , enterprise service buses, business process management (BPM ) tools and content management systems. Enterprise use of Java has also long been the main driver of open source interes t in the platform. This interest has inspired open source communities to produce a large amount of software, including simple function libraries, development fr ameworks (e.g. the , , , ), an d open source implementations of standards and tools (e.g. , the Gl assFish , the Mule and Apache ServiceMix Enterprise service bu ses). Mascot Plain ol' Duke Duke is Java's mascot.[32] When Sun announced that Java SE and Java ME would be released under a free softw are license (the GNU General Public License), they released the Duke graphics un der the free BSD license at the same time.[33] A new Duke personality is created every year.[34] For example, in July 2011 "Future Tech Duke" included a bigger nose, a jetpack, and blue wings.[35] Licensing The source code for Sun's implementations of Java (that is the de facto referenc e implementation) has been available for some time, but until recently the licen se terms severely restricted what could be done with it without signing (and gen erally paying for) a contract with Sun. As such these terms did not satisfy the requirements of either the or the Free Software Foundatio n to be considered open source or free software, and Sun Java was therefore a pr oprietary platform.[36] While several third-party projects (e.g. GNU Classpath and ) creat ed free software partial Java implementations, the large size of the Sun librari es combined with the use of clean room methods meant that their implementations of the Java libraries (the compiler and VM are comparatively small and well defi ned) were incomplete and not fully compatible. These implementations also tended to be far less optimized than Sun's.[citation needed] Free software See also: OpenJDK Sun announced in JavaOne 2006 that Java would become free and open source softwa re,[37] and on October 25, 2006, at the Oracle OpenWorld conference, Jonathan I. Schwartz said that the company was set to announce the release of the core Java Platform as free and open source software within 30 to 60 days.[38] Sun released the Java HotSpot virtual machine and compiler as free software unde r the GNU General Public License on November 13, 2006, with a promise that the r est of the JDK (that includes the JRE) would be placed under the GPL by March 20 07 ("except for a few components that Sun does not have the right to publish in distributable source form under the GPL").[39] According to , th is would mean an end to the "Java trap".[40] called the initia l press announcement, "A real milestone for the free software community".[41] Sun released the source code of the Class library under GPL on May 8, 2007, exce pt some limited parts that were licensed by Sun from 3rd parties who did not wan t their code to be released under a free software and open-source license.[42] S ome of the encumbered parts turned out to be fairly parts of the platform su ch as font rendering and 2D rasterising, but these were released as open-source later by Sun (see OpenJDK Class library). Sun's goal was to replace the parts that remain proprietary and closed-source wi th alternative implementations and the class library completely free and op en source. In the meantime, a third party project called IcedTea created a compl etely free and highly usable JDK by replacing encumbered code with either stubs or code from GNU Classpath. Although OpenJDK has since become buildable without the encumbered parts (from OpenJDK 6 b10[43]), IcedTea is still used by the majo rity of distributions, such as Fedora, RHEL, , , , and Slackware, as it provides security releases and an easier means for patch in clusion. OpenJDK also still doesn't include a browser plugin & Web Start impleme ntation, so IcedTea's companion project, IcedTea-Web, is needed to fill this gap . In June 2008, it was announced that IcedTea6 (as the packaged version of OpenJDK on Fedora 9) has passed the Technology Compatibility Kit tests and can claim to be a fully compatible Java 6 implementation.[44] Because OpenJDK is under the GPL, it is possible to redistribute a custom versio n of the JRE directly with software applications,[45][46] rather than requiring the enduser (or their sysadmin) to download and install the correct version of t he proprietary Oracle JRE onto each of their systems themselves. Criticism Main article: Criticism of Java In most cases, Java support is unnecessary in Web browsers, and security experts recommend that it not be run in a browser unless absolutely necessary.[47] It w as suggested that, if Java is required by a few Web sites, users should have a s eparate browser installation specifically for those sites. Generics Further information: When generics were added to Java 5.0, there was already a large framework of cla sses (many of which were already deprecated), so generics were chosen to be impl emented using erasure to allow for migration compatibility and re-use of these e xisting classes. This limited the features that could be provided by this additi on as compared to some other languages.[48][49] Unsigned integer types Java lacks native unsigned integer types. Unsigned data are often generated from programs written in C and the lack of these types prevents direct data intercha nge between C and Java. Unsigned large numbers are also used in many numeric pro cessing fields, including cryptography, which can make Java less convenient to u se for these tasks.[50] Although it is possible to partially circumvent this pro blem with conversion code and using larger data types, it makes using Java cumbe rsome for handling the unsigned data. While a 32- signed integer may be used to hold a 16-bit unsigned with relative ease, a 32-bit unsigned value woul d require a 64-bit signed integer. Additionally, a 64-bit unsigned value cannot be stored using any integer type in Java because no type larger than 64 exi sts in the Java language. If abstracted using functions, function calls become n ecessary for many operations which are native to some other languages. Alternati vely, it is possible to use Java's signed to emulate unsigned integers of the same size, but this requires detailed knowledge of complex bitwise operat ions.[51] Floating point arithmetic While Java's floating point arithmetic is largely based on IEEE 754 (Standard fo r Binary Floating-Point Arithmetic), certain features are not supported even whe n using the strictfp modifier, such as Exception Flags and Directed — ca pabilities mandated by IEEE Standard 754. Additionally, the f loating-point types permitted in 754 and present in many processors are not perm itted in Java.[52][53] Performance Further information: In the early days of Java (before the HotSpot VM was implemented in Java 1.3 in 2000) there were some criticisms of performance. However, benchmarks typically r eport Java as being about 50% slower than C (a language which compiles to native code).[54][55][56] Java's performance has improved substantially since the early versions.[57] Perf ormance of JIT compilers relative to native compilers has in some optimized test s been shown to be quite similar.[57][58][59] Java bytecode can either be interpreted at run time by a virtual machine, or it can be compiled at load time or runtime into native code which runs directly on the computer's hardware. Interpretation is slower than native execution, and com pilation at load time or runtime has an initial performance penalty for the comp ilation. Modern performant JVM implementations all use the compilation approach, so after the initial startup time the performance is equivalent to native code. Security Further information: The Java platform provides a security architecture[60] which is designed to allo w the user to run untrusted bytecode in a "sandboxed" manner to protect against malicious or poorly written software. This "sandboxing" feature is intended to p rotect the user by restricting access to certain platform features and APIs whic h could be exploited by , such as accessing the local filesystem, running arbitrary commands, or accessing communication networks. In recent years, researchers have discovered numerous security flaws in some wid ely used Java implementations, including Oracle's, which allow untrusted code to bypass the sandboxing mechanism, exposing users to malicious attacks. These fla ws affect only Java applications which execute arbitrary untrusted bytecode, suc h as plug-ins that run Java applets downloaded from public websites. Applications where the user trusts, and has full control over, all code that is being executed are unaffected. On August 31, 2012, Java 6 and 7 on , Mac OS X, and Linux were found to have a serious security flaw that allowed a remote exploit to take plac e by simply loading a malicious web .[61] Java 5 was later found to be flawe d as well.[62] On January 10, 2013, three computer specialists spoke out against Java, telling that it was not secure and that people should disable Java. Jaime Blasco , Labs Manager with AlienVault Labs, stated that "Java is a mess. It’s not secure. You have to disable it."[63] This vulnerability affects Java 7 and it is unclea r if it affects Java 6, so it is suggested that consumers disable it.[64][65] Se curity alerts from Oracle announce schedules of critical security-related patche s to Java.[66] On January 14, 2013, security experts said that the update still failed to prote ct PCs from attack.[67] This exploit hole prompted a response from the United St ates Department of Homeland Security encouraging users to disable or uninstall J ava.[68] Apple blacklisted Java in limited order for all running its M ac OS X operating system through a virus protection program.[69] Adware The Java browser runtime environment has a history of bundling sponsored softwar e to be installed by default during installation and during the updates which ro ll out every month or so. This includes the "Ask.com toolbar" that will redirect browser searches to ads and "McAfee Security Scan Plus".[70] Redundancy Several authors[weasel words] inline with recent Java security and vulnerability issues have called for users to ditch Java. "Once promising, it has outlived it s usefulness in the browser, and has become a nightmare that delights cyber-crim inals at the expense of computer users."[71] "I think everyone should uninstall Java from all their PCs and Macs, and then think carefully about whether they ed to add it back. If you are a typical home user, you can probably do without i t. If you are a business user, you may not have a choice."[72] Update system Java has yet to release an automatic updater that does not require user interven tion and administrative rights[73] unlike [74] and Flash player.[75 ]