You can run Java apps in two ways. The first is to run Java applets inside your Web browser with a plug-in. The second is to run native Java apps on your Mac. With the grave security concerns about Java these days, you may be thinking about how to remove or disable both of those Java systems completely from your Mac. This how-to discusses procedures to uninstall/disable both the plug-in ahd the full Java system. It also looks at the differences between Java 6 and Java 7.

1. Java Applets & Plug-ins

Many Mac users retain the ability to run Java applets in their browser with abrowser plug-in. Oracle now maintains that plug-in for Mac users. If you, because of recent security alerts, upgraded that plug-in to Java 1.7 (or "Java 7" in Java-speak) from Oracle, you'll find the plug-in in /Library/Internet Plug-ins. The file is "JavaAppletPlugin.plugin" and has the icon shown on the left.

Also, when you installed Oracle's Java 7 browser plug-in, you installed a Preference Pane in System Preferences under "Other."

Fig 1. Oracle's Java Preference Pane

That Preference Pane manages the Oracle Java 7 browser plug-in for applets. It will auto-detect that a new version is available, but it will not do the installation. You need to do that yourself under the Update tab.

Fig 2. The Update Tab. Available updates will be presented.

Java 7 won't run in Chrome because Chrome is 32-bit and Java 7 is 64-bit. That leaves Safari and Firefox as the remaining major Mac browsers.

Disabling the Browser Plug-in

The best way to block the applet plug-in in /Library/Internet Plug-ins for both Safari and Firefox browsers is to disable it in the Java Preference Pane. Uncheck the box circled below and restart your browser.

Fig 3. Disable Java for browsers.

By the way, you can verify which version is installed by looking at the Java tab and select "View..."

Fig 4. Verify the plug-in version.

You can also dig down into the plug-in with the terminal app and extract the version number.

> /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -version

I showed this command not to be geeky but to reveal the structure of Oracle's Java applet plug-in. You can do that your self by using "Show Package Contents" on the plug-in.

Alternatively, to be really safe, you could delete the file: "JavaAppletPlugin.plugin" in /Library/Internet Plug-ins. But that would make it harder to easily re-enable the plug-in if you ever need it.

Most of the security issues reported so far relate to this Java applet plug-in for browsers because it is the vehicle through which maliciously crafted websites work.

Apple stopped providing its own Java browser plug-in in October, 2012 and a subsequent Software Update deleted it. Oracle has assumed responsibility for the Java applet plug-in since then.

Finally, you can test whether your Java plug-in has been disabled by going to Oracle's Java applet test page: http://www,java.com/en/download/testjava.jsp . (Safari and Firefox may respond slightly differently.) Only if your plug-in is up to date, enabled and working properly, will you see this:

Java browser plug-in up to date and working properly.

2. Java Applications and Java 6

Depending on the history of your Mac, you may still have Java 1.6 (or "Java 6" in Java-speak) installed for both development and native Java applications. Java 6 is a full-fledged development system that allows developers to write and you run full Java applications such as CrashPlan or jEdit. Apple, not Oracle, still maintains Java 6 for OS X based on patches provided by Oracle. (However, Oracle seems ready to stop issuing those updates for non-corporate users.)

The Two Different Java Systems

This is what confuses many users. They know they upgraded the applet plug-in for the browser, but the terminal command "java -version" doesn't refer to the plug-in. It shows you the version of Apple's full Java 6 package for development and native apps. They may have different version numbers.

Snow Leopard

Up through OS X 10.6, Snow Leopard*, Apple provided Java 6 pre-installed, and they still maintain it. The latest version is 1.6.0_43. If you've kept your system up to date with Apple Software updates, and you open a terminal window and type "java -version" (without the quotes), you should see this:

Fig 5. Getting the Java 6 version number.

I'll get to how to disable that Java install further down.

Lion & Mountain Lion

If you bought a new Mac with Lion or Mountain Lion pre-installed, Java 6 is not there. It's an optional install nowadays.

If you upgraded a Snow Leopard Mac to Lion and/or Mountain Lion, I believe that the install process suppressed Java 6 without a complete uninstall. From looking at my two Macs, it appears that the upgrade removed the directory/folder: /System/Library/Java/JavaVirtualMachines. That will stop any Java application cold in is tracks from running.

On such a Mac, if you enter "java -version" you'll get a prompt inviting you to install Java 6, like this:

Fig 6. Invitation to install Java 6

Or perhaps you installed Java 6 in order to run an older version of GoToMeeting. Or an Adobe installer may have done it.

After a Java 6 installation, there is a large collection of Java files is deeply embedded into OS X, and, unlike the simple plug-in for the browser, it's not easy to uninstall all those files. And no formal uninstaller exists. Matthew Dornquast of Code42 Software told me that the only SAFE way to remove all vestiges of Java 6 is to conduct a clean install of 10.8. And from then on, say "no" if ever asked to install Java.

Is Java 6 Installed?

To see if Java 6 is installed, on the command line, enter, after the prompt:

> java -version

If you see the invitation to install Java 6, shown in Fig. 6, you don't have an operational Java system for applications. (Recommended response: "Not now.") If you see a result like I showed in Fig 5, then it should be Java 1.6.0_43 (as of this writing.)

Uninstalling Java 6

Various websites and forum commenters have suggested a few tricky ways, from the command line, to partially uninstall Java 6 by deleting certain directories or files. There are several serious problems with deleting specific Java 6 files:

  1. Java 6 isn't really, completely uninstalled.
  2. Some applications or suites, for example from Adobe, depend on Java being on the Mac in that form. If you munge about, deleting key Java files, all kinds of unexplainable things might happen down the road.
  3. It's hard to re-enable Java for full applications if you need it unless you have very accurate notes on those files you deleted (or renamed). Believe me.
  4. Some of those examples use the diabolically dangerous "rm -rf" shell command, which if misunderstood and mistyped or misused, could damage your Mac and require you to reinstall OS X.

The best advice I have is to keep your Java 6 up to date and secure using the OS X Software Update function. After a period of inattention, Apple is being much more aggressive in keeping Java 6 up to date and secure. At some point in the future, you'll buy a new Mac with OS X 10.8 or 10.9 installed, and your Mac will be 100 percent free of Java 6. For now, if you're concerned about native Java apps that access websites, just don't run them.

Note that on a Mac without Java 6, you could still install Oracle's browser plug-in as described above.

3. Java Applications and Java 7 JDK

If you, because of security alerts, somewhere along the line, installed Oracle's Java 7 Development Kit (JDK), then entering the command "java -version" will reflect that Oracle's Java 7 has been installed for development. However, Apple's Java 6 is not deleted, (they can co-exist) and as I wrote here, "What Mac Users Need to Know About the Java Security Update":

More importantly, unless you know what you're doing with Java development, [installing Java 7 JDK] could break any stand-alone Java 6 apps you may have been using that depend on knowing where to find Java 6. (Most Java apps for the Mac have been written in Java 6). The bottom line: don't install the (Java 7) JDK from Oracle unless you're an expert user."

Summary

It is very difficult to simply disable and re-enable Java 6, let alone delete it entirely, without Unix experience. Expert users may elect to delete key files to prevent Java 6 apps from ever running, but it's not a great idea for the average user without Unix and command line experience. It's better to be aware if you're running a native Java app, built for Java 6, and then keep Java 6 updated (with Software Update in OS X). Otherwise, find an alternative non-Java solution.

Remember, you're not vulnerable if you run a native Java 6 app, say, a text editor like jEdit, that doesn't visit websites like a browser plug-in is designed to do.

If you really, really want to completely eradicate Java 6 from your Mac, which isn't really necessary, you'll need to do a clean install of Lion or Mountain Lion.

___________________

* There are security issues with Java 6 on 10.5 Leopard that will never be fixed.

Uninstall or Disable Java on a Mac的更多相关文章

  1. How to check for and disable Java in OS X

    Java used to be deeply embedded in OS X, but in recent versions of the OS it's an optional install. ...

  2. Java JDK在Mac下的配置方法

    Java JDK在Mac.Windows下的配置方法 Mac 第一步:下载JDK 官网下载地址 第二步:安装JDK 安装步骤很简单,一直点击下一步即可. 第三步:配置环境变量 打开terminal(终 ...

  3. Install and set JAVA home on MAC OS with commandline

    最近需要在MAC上做一些测试,由于测试机没有安装Java,只能自己安装,由于不能通过图形化界面访问测试机,只能通过命令行的形式来安装JAVA. 1. Download the jre/jdk inst ...

  4. 纯Java获得本地MAC地址

    import java.net.*; public class Ipconfig{      public static void main(String[] arguments) throws Ex ...

  5. 解决javac和java命令在Mac OSX终端里的乱码问题

    转自:https://www.surfchen.org/archives/710 java和javac在简体中文的Mac OSX的终端(Terminal.app)环境下,默认是以GBK编码的中文输出各 ...

  6. docker 安装 hbase安装 java连接hbase (mac环境)

    docker 安装 https://hub.docker.com/editions/community/docker-ce-desktop-mac 下载地址 下载完之后,安装app一样安装就好 安装完 ...

  7. java获取操作系统的MAC地址和硬盘序列号

    1.判断操作系统是Windows还是Linux private static Boolean isLinux() { String os = System.getProperty("os.n ...

  8. 最详细的JavaWeb开发基础之java环境搭建(Mac版)

    阅读文本大概需要 5 分钟. 我之前分享过在 Windows 下面配置 Java 环境,这次给大家带来的是 Mac 下面安装配置 Java 环境.首先 Mac 系统已经带有默认的 Java,但是由于使 ...

  9. java获取电脑mac物理地址

    import java.net.InetAddress;import java.net.NetworkInterface;import java.net.SocketException;import ...

随机推荐

  1. 斐波那契数列 Php练手

    数列从第三项开始,每一项都等于前两项之和. F0=0,F1=1,Fn=F(n-1)+F(n-2) 递归版和非递归版. <?php function fib($n){ $array = array ...

  2. 算法导论——lec 11 动态规划及应用

    和分治法一样,动态规划也是通过组合子问题的解而解决整个问题的.分治法是指将问题划分为一个一个独立的子问题,递归地求解各个子问题然后合并子问题的解而得到原问题的解.与此不同,动态规划适用于子问题不是相互 ...

  3. LRU Cache的简单c++实现

    什么是 LRU LRU Cache是一个Cache的置换算法,含义是“最近最少使用”,把满足“最近最少使用”的数据从Cache中剔除出去,并且保证Cache中第一个数据是最近刚刚访问的,因为这样的数据 ...

  4. ListVeiw新增记录及 滚动条移动到指定位置

    C# 自带的ListView控件的滚动条移动到指定位置. lvwList为ListView控件 lvwList.EnsureVisible(lvwList.Items.Count - 1); 新增记录 ...

  5. ASP.NET 动态编译、预编译和 WebDeployment 项目(转)

    概述 在 Web 服务器上,既可以部署源文件,也可以部署编译后程序集. 若部署源文件,则当用户访问时,Web 应用程序会被动态编译,并缓存该程序集,以便下次访问. 否则,若部署程序集,Web 应用程序 ...

  6. Eclipse搭建Android开发环境(安装ADT,Android4.4.2)(转)

    使用Eclipse做Android开发,需要先在Eclipse上安装ADT(Android Development Tools)插件. 1.安装JDK 1.7 JDK官网http://www.orac ...

  7. mysql的锁--行锁,表锁,乐观锁,悲观锁

    一 引言--为什么mysql提供了锁 最近看到了mysql有行锁和表锁两个概念,越想越疑惑.为什么mysql要提供锁机制,而且这种机制不是一个摆设,还有很多人在用.在现代数据库里几乎有事务机制,aci ...

  8. 《第一行代码》学习笔记17-碎片Fragment(2)

    1.碎片的状态和回调: (1)运行状态:碎片可见+所关联的活动处于运行状态. (2)暂停状态:当活动进入暂停状态(由于另一个未占满屏幕的活动被添加到栈顶),与其相关联的可见碎片会进入暂停状态. (3) ...

  9. 找不到类型“IBatisService.boxManageService”,它在 ServiceHost 指令中提供为 Service 特性值,或在配置元素 system.serviceModel/serviceHostingEnvironment/serviceActivations 中提供。

    找不到类型“IBatisService.boxManageService”,它在 ServiceHost 指令中提供为 Service 特性值,或在配置元素 system.serviceModel/s ...

  10. 将 varchar 值转换为 JDBC 数据类型 DATE 时发生错误。

    问题是: 我是这样解决的  : 网上的 转型方法 并不好使 ,我想了想 可能是由于返回值是String  我 就成功的解决错误了  ..下面是关于原理的讲解肯定方法不唯一   至于错误,的产生,这个肯 ...