From 82d6292cf8d9c21cbf9346930cbc3e2a69548fe7 Mon Sep 17 00:00:00 2001 From: Kohsuke Kawaguchi Date: Fri, 21 Mar 2014 11:53:17 -0700 Subject: [PATCH 01/25] [FIXED JENKINS-18537] Integrated the new version of XStream that contains the fix. (cherry picked from commit 585eb87c2d1fdd93c585efca2b993ad734afdb20) Conflicts: changelog.html --- core/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/pom.xml b/core/pom.xml index d760dce28a..ca98181c32 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -219,7 +219,7 @@ THE SOFTWARE. org.jvnet.hudson xstream - 1.4.4-jenkins-5 + 1.4.7-jenkins-1 jfree From 90e989827e9e7a826c12997d7f7109ac21b0411b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20Gond=C5=BEa?= Date: Sat, 12 Apr 2014 23:15:21 +0200 Subject: [PATCH 02/25] [FIXED JENKINS-21341] Merge pull request #1169 from pliljenberg/master Ugly hack to fix destroyProcess for Java8 (cherry picked from commit 19640e7b4aa6d54865bc0816b604f4c0a9add6b6) --- .../main/java/hudson/util/ProcessTree.java | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/core/src/main/java/hudson/util/ProcessTree.java b/core/src/main/java/hudson/util/ProcessTree.java index 23e5cb3b91..e367f71fad 100644 --- a/core/src/main/java/hudson/util/ProcessTree.java +++ b/core/src/main/java/hudson/util/ProcessTree.java @@ -428,15 +428,15 @@ public abstract class ProcessTree implements Iterable, IProcessTree, public synchronized EnvVars getEnvironmentVariables() { if(env !=null) return env; - env = new EnvVars(); - - try + env = new EnvVars(); + + try { env.putAll(p.getEnvironmentVariables()); } catch (WinpException e) { LOGGER.log(FINE, "Failed to get environment variable ", e); - } + } return env; } }); @@ -549,7 +549,7 @@ public abstract class ProcessTree implements Iterable, IProcessTree, try { int pid = getPid(); LOGGER.fine("Killing pid="+pid); - UnixReflection.DESTROY_PROCESS.invoke(null, pid); + UnixReflection.destroy(pid); } catch (IllegalAccessException e) { // this is impossible IllegalAccessError x = new IllegalAccessError(); @@ -604,7 +604,11 @@ public abstract class ProcessTree implements Iterable, IProcessTree, PID_FIELD = clazz.getDeclaredField("pid"); PID_FIELD.setAccessible(true); - DESTROY_PROCESS = clazz.getDeclaredMethod("destroyProcess",int.class); + if (isPreJava8()) { + DESTROY_PROCESS = clazz.getDeclaredMethod("destroyProcess",int.class); + } else { + DESTROY_PROCESS = clazz.getDeclaredMethod("destroyProcess",int.class, boolean.class); + } DESTROY_PROCESS.setAccessible(true); } catch (ClassNotFoundException e) { LinkageError x = new LinkageError(); @@ -620,6 +624,19 @@ public abstract class ProcessTree implements Iterable, IProcessTree, throw x; } } + + public static void destroy(int pid) throws IllegalAccessException, InvocationTargetException { + if (isPreJava8()) { + DESTROY_PROCESS.invoke(null, pid); + } else { + DESTROY_PROCESS.invoke(null, pid, false); + } + } + + private static boolean isPreJava8() { + int javaVersionAsAnInteger = Integer.parseInt(System.getProperty("java.version").replaceAll("\\.", "").replaceAll("_", "").substring(0, 2)); + return javaVersionAsAnInteger < 18; + } } From 33d88c015c7fc6c6cdb093d4a3d04a75aa85fa80 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Thu, 27 Feb 2014 16:31:07 -0500 Subject: [PATCH 03/25] [FIXED JENKINS-19081] Offer the option of downloading metadata directly from the server. (cherry picked from commit 1ac77750e93f9a1970fecbecdf7f84279d0a62b9) Conflicts: core/src/main/java/hudson/model/DownloadService.java core/src/main/java/hudson/model/UpdateSite.java --- core/src/main/java/hudson/PluginManager.java | 23 ++++ .../java/hudson/model/DownloadService.java | 75 +++++++++-- .../main/java/hudson/model/UpdateCenter.java | 3 +- .../main/java/hudson/model/UpdateSite.java | 73 +++++------ .../main/java/hudson/util/FormValidation.java | 6 +- .../jenkins/security/DownloadSettings.java | 123 ++++++++++++++++++ .../hudson/PluginManager/advanced.jelly | 3 +- .../PageDecoratorImpl/footer.jelly | 3 + .../security/DownloadSettings/config.groovy | 12 ++ .../DownloadSettings/help-checkSignature.html | 4 + .../DownloadSettings/help-useBrowser.html | 6 + .../jenkins/security/Messages.properties | 4 +- .../hudson/model/DownloadServiceTest.java | 5 +- 13 files changed, 278 insertions(+), 62 deletions(-) create mode 100644 core/src/main/java/jenkins/security/DownloadSettings.java create mode 100644 core/src/main/resources/jenkins/security/DownloadSettings/config.groovy create mode 100644 core/src/main/resources/jenkins/security/DownloadSettings/help-checkSignature.html create mode 100644 core/src/main/resources/jenkins/security/DownloadSettings/help-useBrowser.html diff --git a/core/src/main/java/hudson/PluginManager.java b/core/src/main/java/hudson/PluginManager.java index ace1d44d41..40f577f4e5 100644 --- a/core/src/main/java/hudson/PluginManager.java +++ b/core/src/main/java/hudson/PluginManager.java @@ -108,7 +108,12 @@ import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; import static hudson.init.InitMilestone.*; +import hudson.model.DownloadService; +import hudson.util.FormValidation; import static java.util.logging.Level.WARNING; +import jenkins.security.DownloadSettings; +import org.kohsuke.accmod.Restricted; +import org.kohsuke.accmod.restrictions.NoExternalUse; /** * Manages {@link PluginWrapper}s. @@ -775,6 +780,24 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas } } + @Restricted(NoExternalUse.class) + @RequirePOST public HttpResponse doCheckUpdatesServer() throws IOException { + for (UpdateSite site : Jenkins.getInstance().getUpdateCenter().getSites()) { + FormValidation v = site.updateDirectlyNow(DownloadSettings.get().isCheckSignature()); + if (v.kind != FormValidation.Kind.OK) { + // TODO crude but enough for now + return v; + } + } + for (DownloadService.Downloadable d : DownloadService.Downloadable.all()) { + FormValidation v = d.updateNow(); + if (v.kind != FormValidation.Kind.OK) { + return v; + } + } + return HttpResponses.forwardToPreviousPage(); + } + protected String identifyPluginShortName(File t) { try { JarFile j = new JarFile(t); diff --git a/core/src/main/java/hudson/model/DownloadService.java b/core/src/main/java/hudson/model/DownloadService.java index 8561a13c57..658e21a18d 100644 --- a/core/src/main/java/hudson/model/DownloadService.java +++ b/core/src/main/java/hudson/model/DownloadService.java @@ -26,20 +26,25 @@ package hudson.model; import hudson.Extension; import hudson.ExtensionList; import hudson.ExtensionPoint; +import hudson.ProxyConfiguration; import hudson.util.FormValidation; import hudson.util.FormValidation.Kind; import hudson.util.QuotedStringTokenizer; import hudson.util.TextFile; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; +import java.net.URLEncoder; +import java.util.logging.Logger; +import jenkins.security.DownloadSettings; import jenkins.model.Jenkins; import jenkins.util.JSONSignatureValidator; import net.sf.json.JSONException; -import org.kohsuke.stapler.Stapler; - -import java.io.File; -import java.io.IOException; -import java.util.logging.Logger; - import net.sf.json.JSONObject; +import org.kohsuke.accmod.Restricted; +import org.kohsuke.accmod.restrictions.NoExternalUse; +import org.kohsuke.stapler.Stapler; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerResponse; @@ -62,6 +67,9 @@ public class DownloadService extends PageDecorator { * Builds up an HTML fragment that starts all the download jobs. */ public String generateFragment() { + if (!DownloadSettings.get().isUseBrowser()) { + return ""; + } if (neverUpdate) return ""; if (doesNotSupportPostMessage()) return ""; @@ -135,6 +143,34 @@ public class DownloadService extends PageDecorator { return null; } + /** + * Loads JSON from a JSONP URL. + * Metadata for downloadables and update centers is offered in two formats, both designed for download from the browser (predating {@link DownloadSettings}): + * HTML using {@code postMessage} for newer browsers, and JSONP as a fallback. + * Confusingly, the JSONP files are given the {@code *.json} file extension, when they are really JavaScript and should be {@code *.js}. + * This method extracts the JSON from a JSONP URL, since that is what we actually want when we download from the server. + * (Currently the true JSON is not published separately, and extracting from the {@code *.json.html} is more work.) + * @param src a URL to a JSONP file (typically including {@code id} and {@code version} query parameters) + * @return the embedded JSON text + * @throws IOException if either downloading or processing failed + */ + @Restricted(NoExternalUse.class) + public static String loadJSON(URL src) throws IOException { + InputStream is = ProxyConfiguration.open(src).getInputStream(); + try { + String jsonp = IOUtils.toString(is, "UTF-8"); + int start = jsonp.indexOf('{'); + int end = jsonp.lastIndexOf('}'); + if (start >= 0 && end > start) { + return jsonp.substring(start, end + 1); + } else { + throw new IOException("Could not find JSON in " + src); + } + } finally { + is.close(); + } + } + /** * Represents a periodically updated JSON data file obtained from a remote URL. * @@ -248,17 +284,28 @@ public class DownloadService extends PageDecorator { * This is where the browser sends us the data. */ public void doPostBack(StaplerRequest req, StaplerResponse rsp) throws IOException { + if (!DownloadSettings.get().isUseBrowser()) { + throw new IOException("not allowed"); + } long dataTimestamp = System.currentTimeMillis(); due = dataTimestamp+getInterval(); // success or fail, don't try too often String json = IOUtils.toString(req.getInputStream(),"UTF-8"); + FormValidation e = load(json, dataTimestamp); + if (e.kind != Kind.OK) { + LOGGER.severe(e.renderHtml()); + throw e; + } + rsp.setContentType("text/plain"); // So browser won't try to parse response + } + + private FormValidation load(String json, long dataTimestamp) throws IOException { JSONObject o = JSONObject.fromObject(json); - if (signatureCheck) { + if (DownloadSettings.get().isCheckSignature()) { FormValidation e = new JSONSignatureValidator("downloadable '"+id+"'").verifySignature(o); if (e.kind!= Kind.OK) { - LOGGER.severe(e.renderHtml()); - throw e; + return e; } } @@ -266,8 +313,12 @@ public class DownloadService extends PageDecorator { df.write(json); df.file.setLastModified(dataTimestamp); LOGGER.info("Obtained the updated data file for "+id); + return FormValidation.ok(); + } - rsp.setContentType("text/plain"); // So browser won't try to parse response + @Restricted(NoExternalUse.class) + public FormValidation updateNow() throws IOException { + return load(loadJSON(new URL(getUrl() + "?id=" + URLEncoder.encode(getId(), "UTF-8") + "&version=" + URLEncoder.encode(Jenkins.VERSION, "UTF-8"))), System.currentTimeMillis()); } /** @@ -295,9 +346,7 @@ public class DownloadService extends PageDecorator { public static boolean neverUpdate = Boolean.getBoolean(DownloadService.class.getName()+".never"); - /** - * Off by default until we know this is reasonably working. - */ + /** @deprecated Use {@link DownloadSettings#setIgnoreSignature} instead. */ public static boolean signatureCheck = !Boolean.getBoolean(DownloadService.class.getName()+".noSignatureCheck"); } diff --git a/core/src/main/java/hudson/model/UpdateCenter.java b/core/src/main/java/hudson/model/UpdateCenter.java index 344ab98582..b7ec3a4e30 100644 --- a/core/src/main/java/hudson/model/UpdateCenter.java +++ b/core/src/main/java/hudson/model/UpdateCenter.java @@ -88,6 +88,7 @@ import java.util.jar.JarFile; import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.CheckForNull; +import jenkins.security.DownloadSettings; import org.acegisecurity.context.SecurityContextHolder; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.NoExternalUse; @@ -630,7 +631,7 @@ public class UpdateCenter extends AbstractModelObject implements Saveable, OnMas public List updateAllSites() throws InterruptedException, ExecutionException { List > futures = new ArrayList>(); for (UpdateSite site : getSites()) { - Future future = site.updateDirectly(true); + Future future = site.updateDirectly(DownloadSettings.get().isCheckSignature()); if (future != null) { futures.add(future); } diff --git a/core/src/main/java/hudson/model/UpdateSite.java b/core/src/main/java/hudson/model/UpdateSite.java index 5b85cf266e..1681aabab1 100644 --- a/core/src/main/java/hudson/model/UpdateSite.java +++ b/core/src/main/java/hudson/model/UpdateSite.java @@ -27,32 +27,18 @@ package hudson.model; import hudson.PluginManager; import hudson.PluginWrapper; -import hudson.ProxyConfiguration; import hudson.lifecycle.Lifecycle; import hudson.model.UpdateCenter.UpdateCenterJob; import hudson.util.FormValidation; import hudson.util.FormValidation.Kind; import hudson.util.HttpResponses; import hudson.util.TextFile; +import static hudson.util.TimeUnit2.*; import hudson.util.VersionNumber; -import jenkins.model.Jenkins; -import jenkins.util.JSONSignatureValidator; -import net.sf.json.JSONException; -import net.sf.json.JSONObject; -import org.apache.commons.lang.StringUtils; -import org.kohsuke.stapler.DataBoundConstructor; -import org.kohsuke.stapler.HttpResponse; -import org.kohsuke.stapler.StaplerRequest; -import org.kohsuke.stapler.export.Exported; -import org.kohsuke.stapler.export.ExportedBean; -import org.kohsuke.stapler.interceptor.RequirePOST; - import java.io.File; import java.io.IOException; -import java.io.InputStream; import java.net.URI; import java.net.URL; -import java.net.URLConnection; import java.net.URLEncoder; import java.security.GeneralSecurityException; import java.util.ArrayList; @@ -66,10 +52,23 @@ import java.util.concurrent.Callable; import java.util.concurrent.Future; import java.util.logging.Level; import java.util.logging.Logger; - -import static hudson.util.TimeUnit2.*; import org.apache.commons.io.IOUtils; - +import javax.annotation.CheckForNull; +import javax.annotation.Nonnull; +import jenkins.model.Jenkins; +import jenkins.security.DownloadSettings; +import jenkins.util.JSONSignatureValidator; +import net.sf.json.JSONException; +import net.sf.json.JSONObject; +import org.apache.commons.lang.StringUtils; +import org.kohsuke.accmod.Restricted; +import org.kohsuke.accmod.restrictions.NoExternalUse; +import org.kohsuke.stapler.DataBoundConstructor; +import org.kohsuke.stapler.HttpResponse; +import org.kohsuke.stapler.StaplerRequest; +import org.kohsuke.stapler.export.Exported; +import org.kohsuke.stapler.export.ExportedBean; +import org.kohsuke.stapler.interceptor.RequirePOST; /** * Source of the update center information, like "http://jenkins-ci.org/update-center.json" @@ -154,42 +153,30 @@ public class UpdateSite { * @return null if no updates are necessary, or the future result * @since 1.502 */ - public Future updateDirectly(final boolean signatureCheck) { + public @CheckForNull Future updateDirectly(final boolean signatureCheck) { if (! getDataFile().exists() || isDue()) { return Jenkins.getInstance().getUpdateCenter().updateService.submit(new Callable() { - - public FormValidation call() throws Exception { - URL src = new URL(getUrl() + "?id=" + URLEncoder.encode(getId(),"UTF-8") - + "&version="+URLEncoder.encode(Jenkins.VERSION, "UTF-8")); - URLConnection conn = ProxyConfiguration.open(src); - InputStream is = conn.getInputStream(); - try { - String uncleanJson = IOUtils.toString(is,"UTF-8"); - int jsonStart = uncleanJson.indexOf("{\""); - if (jsonStart >= 0) { - uncleanJson = uncleanJson.substring(jsonStart); - int end = uncleanJson.lastIndexOf('}'); - if (end>0) - uncleanJson = uncleanJson.substring(0,end+1); - return updateData(uncleanJson, signatureCheck); - } else { - throw new IOException("Could not find json in content of " + - "update center from url: "+src.toExternalForm()); - } - } finally { - if (is != null) - is.close(); - } + @Override public FormValidation call() throws Exception { + return updateDirectlyNow(signatureCheck); } }); - } + } else { return null; + } + } + + @Restricted(NoExternalUse.class) + public @Nonnull FormValidation updateDirectlyNow(boolean signatureCheck) throws IOException { + return updateData(DownloadService.loadJSON(new URL(getUrl() + "?id=" + URLEncoder.encode(getId(), "UTF-8") + "&version=" + URLEncoder.encode(Jenkins.VERSION, "UTF-8"))), signatureCheck); } /** * This is the endpoint that receives the update center data file from the browser. */ public FormValidation doPostBack(StaplerRequest req) throws IOException, GeneralSecurityException { + if (!DownloadSettings.get().isUseBrowser()) { + throw new IOException("not allowed"); + } return updateData(IOUtils.toString(req.getInputStream(),"UTF-8"), true); } diff --git a/core/src/main/java/hudson/util/FormValidation.java b/core/src/main/java/hudson/util/FormValidation.java index 2816b3a55b..8190dab1f1 100644 --- a/core/src/main/java/hudson/util/FormValidation.java +++ b/core/src/main/java/hudson/util/FormValidation.java @@ -239,9 +239,13 @@ public abstract class FormValidation extends IOException implements HttpResponse return ok(); return new FormValidation(kind, message) { public String renderHtml() { + StaplerRequest req = Stapler.getCurrentRequest(); + if (req == null) { // being called from some other context + return message; + } // 1x16 spacer needed for IE since it doesn't support min-height return "
"+ + req.getContextPath()+ Jenkins.RESOURCE_PATH+"/images/none.gif' height=16 width=1>"+ message+"
"; } @Override public String toString() { diff --git a/core/src/main/java/jenkins/security/DownloadSettings.java b/core/src/main/java/jenkins/security/DownloadSettings.java new file mode 100644 index 0000000000..d620237468 --- /dev/null +++ b/core/src/main/java/jenkins/security/DownloadSettings.java @@ -0,0 +1,123 @@ +/* + * The MIT License + * + * Copyright 2014 Jesse Glick. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package jenkins.security; + +import hudson.Extension; +import hudson.model.AsyncPeriodicWork; +import hudson.model.DownloadService; +import hudson.model.TaskListener; +import hudson.model.UpdateSite; +import hudson.util.FormValidation; +import java.io.IOException; +import jenkins.model.GlobalConfiguration; +import jenkins.model.GlobalConfigurationCategory; +import jenkins.model.Jenkins; +import net.sf.json.JSONObject; +import org.kohsuke.accmod.Restricted; +import org.kohsuke.accmod.restrictions.NoExternalUse; +import org.kohsuke.stapler.HttpResponse; +import org.kohsuke.stapler.QueryParameter; +import org.kohsuke.stapler.StaplerRequest; + +/** + * Lets user configure how metadata files should be downloaded. + * @see UpdateSite + * @see DownloadService + */ +@Restricted(NoExternalUse.class) // no clear reason for this to be an API +@Extension public final class DownloadSettings extends GlobalConfiguration { + + public static DownloadSettings get() { + return Jenkins.getInstance().getInjector().getInstance(DownloadSettings.class); + } + + private boolean useBrowser = true; // historical default, not necessarily recommended + @SuppressWarnings("deprecation") + private boolean checkSignature = DownloadService.signatureCheck; + + public DownloadSettings() { + load(); + } + + @Override public GlobalConfigurationCategory getCategory() { + return GlobalConfigurationCategory.get(GlobalConfigurationCategory.Security.class); + } + + @Override public boolean configure(StaplerRequest req, JSONObject json) throws FormException { + req.bindJSON(this, json); + return true; + } + + public boolean isUseBrowser() { + return useBrowser; + } + + public void setUseBrowser(boolean useBrowser) { + this.useBrowser = useBrowser; + save(); + } + + public boolean isCheckSignature() { + return checkSignature; + } + + public void setCheckSignature(boolean checkSignature) { + this.checkSignature = checkSignature; + save(); + } + + public FormValidation doCheckCheckSignature(@QueryParameter boolean value, @QueryParameter boolean useBrowser) { + if (value) { + return FormValidation.ok(); + } else if (useBrowser) { + return FormValidation.warningWithMarkup(Messages.DownloadSettings_disabling_signature_checks_for_in_browse()); + } else { + return FormValidation.warningWithMarkup(Messages.DownloadSettings_disabling_signature_checks_is_not_recomm()); + } + } + + @Extension public static final class DailyCheck extends AsyncPeriodicWork { + + public DailyCheck() { + super("Download metadata"); + } + + @Override public long getRecurrencePeriod() { + return DAY; + } + + @Override protected void execute(TaskListener listener) throws IOException, InterruptedException { + if (get().isUseBrowser()) { + return; + } + HttpResponse rsp = Jenkins.getInstance().getPluginManager().doCheckUpdatesServer(); + if (rsp instanceof FormValidation) { + listener.error(((FormValidation) rsp).renderHtml()); + } + } + + } + +} diff --git a/core/src/main/resources/hudson/PluginManager/advanced.jelly b/core/src/main/resources/hudson/PluginManager/advanced.jelly index 32c5316a39..79dc056fbc 100644 --- a/core/src/main/resources/hudson/PluginManager/advanced.jelly +++ b/core/src/main/resources/hudson/PluginManager/advanced.jelly @@ -96,7 +96,8 @@ THE SOFTWARE.
-
+ + ${%lastUpdated(app.updateCenter.lastUpdatedString)} diff --git a/core/src/main/resources/hudson/model/UpdateCenter/PageDecoratorImpl/footer.jelly b/core/src/main/resources/hudson/model/UpdateCenter/PageDecoratorImpl/footer.jelly index e792c77836..1751517592 100644 --- a/core/src/main/resources/hudson/model/UpdateCenter/PageDecoratorImpl/footer.jelly +++ b/core/src/main/resources/hudson/model/UpdateCenter/PageDecoratorImpl/footer.jelly @@ -31,6 +31,8 @@ THE SOFTWARE. --> + + + diff --git a/core/src/main/resources/jenkins/security/DownloadSettings/config.groovy b/core/src/main/resources/jenkins/security/DownloadSettings/config.groovy new file mode 100644 index 0000000000..9b11a442ef --- /dev/null +++ b/core/src/main/resources/jenkins/security/DownloadSettings/config.groovy @@ -0,0 +1,12 @@ +package jenkins.security.DownloadSettings + +def f = namespace(lib.FormTagLib) + +f.section(title: _("Download Preferences")) { + f.entry(title: _("Use Browser"), field: "useBrowser") { + f.checkbox() + } + f.entry(title: _("Check Signatures"), field: "checkSignature") { + f.checkbox() + } +} diff --git a/core/src/main/resources/jenkins/security/DownloadSettings/help-checkSignature.html b/core/src/main/resources/jenkins/security/DownloadSettings/help-checkSignature.html new file mode 100644 index 0000000000..d639bbaf78 --- /dev/null +++ b/core/src/main/resources/jenkins/security/DownloadSettings/help-checkSignature.html @@ -0,0 +1,4 @@ +
+ Uncheck to skip the signature check on downloaded metadata. + This is generally dangerous and should only be used as an emergency measure when dealing with broken upstream metadata. +
diff --git a/core/src/main/resources/jenkins/security/DownloadSettings/help-useBrowser.html b/core/src/main/resources/jenkins/security/DownloadSettings/help-useBrowser.html new file mode 100644 index 0000000000..2336961826 --- /dev/null +++ b/core/src/main/resources/jenkins/security/DownloadSettings/help-useBrowser.html @@ -0,0 +1,6 @@ +
+ Check to force the user’s browser to download metadata rather than Jenkins itself doing it. + Actual file downloads (plugins, tools) will still happen from Jenkins itself, + but this can be used to at least see new metadata when Jenkins cannot access the Internet + (but your own browser can, perhaps using some special proxy that Jenkins is not configured to use). +
diff --git a/core/src/main/resources/jenkins/security/Messages.properties b/core/src/main/resources/jenkins/security/Messages.properties index fc71097d03..2c93ecc382 100644 --- a/core/src/main/resources/jenkins/security/Messages.properties +++ b/core/src/main/resources/jenkins/security/Messages.properties @@ -22,4 +22,6 @@ ApiTokenProperty.DisplayName=API Token ApiTokenProperty.ChangeToken.Success=
Updated
-RekeySecretAdminMonitor.DisplayName=Re-keying \ No newline at end of file +DownloadSettings.disabling_signature_checks_for_in_browse=Disabling signature checks for in-browser downloads is very dangerous as unprivileged users could submit spoofed metadata! +DownloadSettings.disabling_signature_checks_is_not_recomm=Disabling signature checks is not recommended except as a temporary measure when upstream metadata is broken, such as due to expired certificates. +RekeySecretAdminMonitor.DisplayName=Re-keying diff --git a/test/src/test/java/hudson/model/DownloadServiceTest.java b/test/src/test/java/hudson/model/DownloadServiceTest.java index 11f3f026a4..62958422f4 100644 --- a/test/src/test/java/hudson/model/DownloadServiceTest.java +++ b/test/src/test/java/hudson/model/DownloadServiceTest.java @@ -7,6 +7,7 @@ import org.jvnet.hudson.test.HudsonTestCase; import org.kohsuke.stapler.StaplerResponse; import java.io.IOException; +import jenkins.security.DownloadSettings; /** * @author Kohsuke Kawaguchi @@ -40,13 +41,13 @@ public class DownloadServiceTest extends HudsonTestCase { assertNull(job.getData()); // and now it should work - DownloadService.signatureCheck = false; + DownloadSettings.get().setCheckSignature(false); try { createWebClient().goTo("/self/testPost"); JSONObject d = job.getData(); assertEquals(hashCode(),d.getInt("hello")); } finally { - DownloadService.signatureCheck = true; + DownloadSettings.get().setCheckSignature(true); } // TODO: test with a signature From a47dc036d8ea06f162d8980223c1ca17bd2b961c Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Thu, 27 Feb 2014 16:54:16 -0500 Subject: [PATCH 04/25] Be a bit paranoid and ensure the admin has CONFIGURE_UPDATECENTER before turning off signature checks. (cherry picked from commit 1262d88289d94c1ee7d6736341ce354e948ceef7) --- core/src/main/java/jenkins/security/DownloadSettings.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/src/main/java/jenkins/security/DownloadSettings.java b/core/src/main/java/jenkins/security/DownloadSettings.java index d620237468..9961e64a06 100644 --- a/core/src/main/java/jenkins/security/DownloadSettings.java +++ b/core/src/main/java/jenkins/security/DownloadSettings.java @@ -25,6 +25,7 @@ package jenkins.security; import hudson.Extension; +import hudson.PluginManager; import hudson.model.AsyncPeriodicWork; import hudson.model.DownloadService; import hudson.model.TaskListener; @@ -84,6 +85,11 @@ import org.kohsuke.stapler.StaplerRequest; } public void setCheckSignature(boolean checkSignature) { + if (!checkSignature) { + // Just to be on the safe side. Normally this is implied by ADMINISTER, needed to configure the security screen anyway, + // but in case ADMINISTER but not CONFIGURE_UPDATECENTER is somehow granted, make sure signature checking cannot be disabled. + Jenkins.getInstance().checkPermission(PluginManager.CONFIGURE_UPDATECENTER); + } this.checkSignature = checkSignature; save(); } From 8c9910f2bba19076ff29216f993027ca77ee8675 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Thu, 27 Feb 2014 17:10:01 -0500 Subject: [PATCH 05/25] @kohsuke prefers that the option to disable signature checks not even be presented unless -Dhudson.model.DownloadService.noSignatureCheck is used. (cherry picked from commit 54c85007f355dadfbf8b0fc5924ded55f1614280) --- core/src/main/java/hudson/model/DownloadService.java | 2 +- .../jenkins/security/DownloadSettings/config.groovy | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/hudson/model/DownloadService.java b/core/src/main/java/hudson/model/DownloadService.java index 658e21a18d..2e592d8222 100644 --- a/core/src/main/java/hudson/model/DownloadService.java +++ b/core/src/main/java/hudson/model/DownloadService.java @@ -346,7 +346,7 @@ public class DownloadService extends PageDecorator { public static boolean neverUpdate = Boolean.getBoolean(DownloadService.class.getName()+".never"); - /** @deprecated Use {@link DownloadSettings#setIgnoreSignature} instead. */ + /** Now used only to set default value of, and enable UI switching of, {@link DownloadSettings#setIgnoreSignature}. */ public static boolean signatureCheck = !Boolean.getBoolean(DownloadService.class.getName()+".noSignatureCheck"); } diff --git a/core/src/main/resources/jenkins/security/DownloadSettings/config.groovy b/core/src/main/resources/jenkins/security/DownloadSettings/config.groovy index 9b11a442ef..90c81a0dab 100644 --- a/core/src/main/resources/jenkins/security/DownloadSettings/config.groovy +++ b/core/src/main/resources/jenkins/security/DownloadSettings/config.groovy @@ -6,7 +6,9 @@ f.section(title: _("Download Preferences")) { f.entry(title: _("Use Browser"), field: "useBrowser") { f.checkbox() } - f.entry(title: _("Check Signatures"), field: "checkSignature") { - f.checkbox() + if (!instance.checkSignature || !hudson.model.DownloadService.signatureCheck) { // do not display this option by default + f.entry(title: _("Check Signatures"), field: "checkSignature") { + f.checkbox() + } } } From 01ba28d0a2ca3f9c0a9b5b1571a5f81be600573f Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Fri, 28 Feb 2014 10:19:15 -0500 Subject: [PATCH 06/25] Testing the loadJSON method directly to make sure various JSONP formats are handled. (cherry picked from commit fb5241451337b2c084d8c7772c1d0552a0cc0169) --- .../hudson/model/DownloadServiceTest.java | 34 +- .../hudson.tasks.Maven.MavenInstaller.json | 137 + .../model/hudson.tools.JDKInstaller.json | 5925 +++++++++++++++++ 3 files changed, 6087 insertions(+), 9 deletions(-) create mode 100644 test/src/test/resources/hudson/model/hudson.tasks.Maven.MavenInstaller.json create mode 100644 test/src/test/resources/hudson/model/hudson.tools.JDKInstaller.json diff --git a/test/src/test/java/hudson/model/DownloadServiceTest.java b/test/src/test/java/hudson/model/DownloadServiceTest.java index 62958422f4..50ff400070 100644 --- a/test/src/test/java/hudson/model/DownloadServiceTest.java +++ b/test/src/test/java/hudson/model/DownloadServiceTest.java @@ -1,14 +1,17 @@ package hudson.model; import hudson.model.DownloadService.Downloadable; +import java.io.IOException; +import java.net.URL; +import java.util.Set; +import java.util.TreeSet; +import jenkins.security.DownloadSettings; import net.sf.json.JSONObject; import org.jvnet.hudson.test.Bug; import org.jvnet.hudson.test.HudsonTestCase; +import org.jvnet.hudson.test.WithoutJenkins; import org.kohsuke.stapler.StaplerResponse; -import java.io.IOException; -import jenkins.security.DownloadSettings; - /** * @author Kohsuke Kawaguchi */ @@ -21,18 +24,15 @@ public class DownloadServiceTest extends HudsonTestCase { @Override protected void setUp() throws Exception { super.setUp(); + if (jenkins == null) { + return; + } // this object receives the submission. // to bypass the URL restriction, we'll trigger downloadService.download ourselves job = new Downloadable("test", "UNUSED"); Downloadable.all().add(job); } - @Override - protected void tearDown() throws Exception { - Downloadable.all().remove(job); - super.tearDown(); - } - @Bug(5536) public void testPost() throws Exception { // initially it should fail because the data doesn't have a signature @@ -60,4 +60,20 @@ public class DownloadServiceTest extends HudsonTestCase { rsp.setContentType("application/javascript"); rsp.getWriter().println("downloadService.post('test',{'hello':"+hashCode()+"})"); } + + @WithoutJenkins // could have been in core/src/test/ but update-center.json was already in test/src/test/ (used by UpdateSiteTest) + public void testLoadJSON() throws Exception { + assertRoots("[list]", "hudson.tasks.Maven.MavenInstaller.json"); // format used by most tools + assertRoots("[data, version]", "hudson.tools.JDKInstaller.json"); // anomalous format + assertRoots("[connectionCheckUrl, core, id, plugins, signature, updateCenterVersion]", "update-center.json"); + } + + private static void assertRoots(String expected, String file) throws Exception { + URL resource = DownloadServiceTest.class.getResource(file); + assertNotNull(file, resource); + JSONObject json = JSONObject.fromObject(DownloadService.loadJSON(resource)); + @SuppressWarnings("unchecked") Set keySet = json.keySet(); + assertEquals(expected, new TreeSet(keySet).toString()); + } + } diff --git a/test/src/test/resources/hudson/model/hudson.tasks.Maven.MavenInstaller.json b/test/src/test/resources/hudson/model/hudson.tasks.Maven.MavenInstaller.json new file mode 100644 index 0000000000..ff0d77bf6a --- /dev/null +++ b/test/src/test/resources/hudson/model/hudson.tasks.Maven.MavenInstaller.json @@ -0,0 +1,137 @@ +downloadService.post('hudson.tasks.Maven.MavenInstaller',{"list": [ + { + "id": "3.1.1", + "name": "3.1.1", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-3.1.1-bin.zip" + }, + { + "id": "3.1.0", + "name": "3.1.0", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-3.1.0-bin.zip" + }, + { + "id": "3.0.5", + "name": "3.0.5", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.5-bin.zip" + }, + { + "id": "3.0.4", + "name": "3.0.4", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.4-bin.zip" + }, + { + "id": "3.0.3", + "name": "3.0.3", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.3-bin.zip" + }, + { + "id": "3.0.2", + "name": "3.0.2", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.2-bin.zip" + }, + { + "id": "3.0.1", + "name": "3.0.1", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-3.0.1-bin.zip" + }, + { + "id": "3.0", + "name": "3.0", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-3.0-bin.zip" + }, + { + "id": "2.2.1", + "name": "2.2.1", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-2.2.1-bin.zip" + }, + { + "id": "2.2.0", + "name": "2.2.0", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-2.2.0-bin.zip" + }, + { + "id": "2.1.0", + "name": "2.1.0", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-2.1.0-bin.zip" + }, + { + "id": "2.0.11", + "name": "2.0.11", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-2.0.11-bin.zip" + }, + { + "id": "2.0.10", + "name": "2.0.10", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-2.0.10-bin.zip" + }, + { + "id": "2.0.9", + "name": "2.0.9", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-2.0.9-bin.zip" + }, + { + "id": "2.0.8", + "name": "2.0.8", + "url": "http://archive.apache.org/dist/maven/binaries/apache-maven-2.0.8-bin.zip" + }, + { + "id": "2.0.7", + "name": "2.0.7", + "url": "http://archive.apache.org/dist/maven/binaries/maven-2.0.7-bin.zip" + }, + { + "id": "2.0.6", + "name": "2.0.6", + "url": "http://archive.apache.org/dist/maven/binaries/maven-2.0.6-bin.zip" + }, + { + "id": "2.0.5", + "name": "2.0.5", + "url": "http://archive.apache.org/dist/maven/binaries/maven-2.0.5-bin.zip" + }, + { + "id": "2.0.4", + "name": "2.0.4", + "url": "http://archive.apache.org/dist/maven/binaries/maven-2.0.4-bin.zip" + }, + { + "id": "2.0.3", + "name": "2.0.3", + "url": "http://archive.apache.org/dist/maven/binaries/maven-2.0.3-bin.zip" + }, + { + "id": "2.0.2", + "name": "2.0.2", + "url": "http://archive.apache.org/dist/maven/binaries/maven-2.0.2-bin.zip" + }, + { + "id": "2.0.1", + "name": "2.0.1", + "url": "http://archive.apache.org/dist/maven/binaries/maven-2.0.1-bin.zip" + }, + { + "id": "2.0", + "name": "2.0", + "url": "http://archive.apache.org/dist/maven/binaries/maven-2.0-bin.zip" + }, + { + "id": "1.1", + "name": "1.1", + "url": "http://archive.apache.org/dist/maven/binaries/maven-1.1.zip" + }, + { + "id": "1.0.2", + "name": "1.0.2", + "url": "http://archive.apache.org/dist/maven/binaries/maven-1.0.2.zip" + }, + { + "id": "1.0.1", + "name": "1.0.1", + "url": "http://archive.apache.org/dist/maven/binaries/maven-1.0.1.zip" + }, + { + "id": "1.0", + "name": "1.0", + "url": "http://archive.apache.org/dist/maven/binaries/maven-1.0.zip" + } +]}) \ No newline at end of file diff --git a/test/src/test/resources/hudson/model/hudson.tools.JDKInstaller.json b/test/src/test/resources/hudson/model/hudson.tools.JDKInstaller.json new file mode 100644 index 0000000000..7b7e24f831 --- /dev/null +++ b/test/src/test/resources/hudson/model/hudson.tools.JDKInstaller.json @@ -0,0 +1,5925 @@ +downloadService.post('hudson.tools.JDKInstaller',{ + "data": [ + { + "name": "JDK 7", + "releases": [ + { + "files": [ + { + "filepath": "http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-linux-arm-vfp-hflt.tar.gz", + "name": "jdk-7u51-linux-arm-vfp-hflt.tar.gz", + "title": "Linux ARM v6/v7 Hard Float ABI" + }, + { + "filepath": "http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-linux-arm-vfp-sflt.tar.gz", + "name": "jdk-7u51-linux-arm-vfp-sflt.tar.gz", + "title": "Linux ARM v6/v7 Soft Float ABI" + }, + { + "filepath": "http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-linux-i586.tar.gz", + "name": "jdk-7u51-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-linux-x64.tar.gz", + "name": "jdk-7u51-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-macosx-x64.dmg", + "name": "jdk-7u51-macosx-x64.dmg", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-solaris-i586.tar.gz", + "name": "jdk-7u51-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-solaris-sparc.tar.gz", + "name": "jdk-7u51-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-solaris-sparcv9.tar.gz", + "name": "jdk-7u51-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-solaris-x64.tar.gz", + "name": "jdk-7u51-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-windows-i586.exe", + "name": "jdk-7u51-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn-pub/java/jdk/7u51-b13/jdk-7u51-windows-x64.exe", + "name": "jdk-7u51-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/terms/license", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u51-oth-JPR", + "title": "Java SE Development Kit 7u51" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u45-b18/jdk-7u45-linux-arm-vfp-hflt.tar.gz", + "name": "jdk-7u45-linux-arm-vfp-hflt.tar.gz", + "title": "Linux ARM v6/v7 Hard Float ABI" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u45-b18/jdk-7u45-linux-arm-vfp-sflt.tar.gz", + "name": "jdk-7u45-linux-arm-vfp-sflt.tar.gz", + "title": "Linux ARM v6/v7 Soft Float ABI" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u45-b18/jdk-7u45-linux-i586.tar.gz", + "name": "jdk-7u45-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u45-b18/jdk-7u45-linux-x64.tar.gz", + "name": "jdk-7u45-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u45-b18/jdk-7u45-macosx-x64.dmg", + "name": "jdk-7u45-macosx-x64.dmg", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u45-b18/jdk-7u45-solaris-i586.tar.gz", + "name": "jdk-7u45-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u45-b18/jdk-7u45-solaris-sparc.tar.gz", + "name": "jdk-7u45-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u45-b18/jdk-7u45-solaris-sparcv9.tar.gz", + "name": "jdk-7u45-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u45-b18/jdk-7u45-solaris-x64.tar.gz", + "name": "jdk-7u45-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u45-b18/jdk-7u45-windows-i586.exe", + "name": "jdk-7u45-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u45-b18/jdk-7u45-windows-x64.exe", + "name": "jdk-7u45-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u45-oth-JPR", + "title": "Java SE Development Kit 7u45" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u40-b43/jdk-7u40-linux-arm-vfp-hflt.tar.gz", + "name": "jdk-7u40-linux-arm-vfp-hflt.tar.gz", + "title": "Linux ARM v7 Hard Float ABI" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u40-b43/jdk-7u40-linux-arm-vfp-sflt.tar.gz", + "name": "jdk-7u40-linux-arm-vfp-sflt.tar.gz", + "title": "Linux ARM v6/v7 Soft Float ABI" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u40-b43/jdk-7u40-linux-i586.tar.gz", + "name": "jdk-7u40-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u40-b43/jdk-7u40-linux-x64.tar.gz", + "name": "jdk-7u40-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u40-b43/jdk-7u40-macosx-x64.dmg", + "name": "jdk-7u40-macosx-x64.dmg", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u40-b43/jdk-7u40-solaris-i586.tar.gz", + "name": "jdk-7u40-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u40-b43/jdk-7u40-solaris-sparc.tar.gz", + "name": "jdk-7u40-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u40-b43/jdk-7u40-solaris-sparcv9.tar.gz", + "name": "jdk-7u40-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u40-b43/jdk-7u40-solaris-x64.tar.gz", + "name": "jdk-7u40-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u40-b43/jdk-7u40-windows-i586.exe", + "name": "jdk-7u40-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u40-b43/jdk-7u40-windows-x64.exe", + "name": "jdk-7u40-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u40-oth-JPR", + "title": "Java SE Development Kit 7u40" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u25-b15/jdk-7u25-linux-i586.tar.gz", + "name": "jdk-7u25-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u25-b15/jdk-7u25-linux-x64.tar.gz", + "name": "jdk-7u25-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u25-b15/jdk-7u25-macosx-x64.dmg", + "name": "jdk-7u25-macosx-x64.dmg", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u25-b15/jdk-7u25-solaris-i586.tar.gz", + "name": "jdk-7u25-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u25-b15/jdk-7u25-solaris-sparc.tar.gz", + "name": "jdk-7u25-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u25-b15/jdk-7u25-solaris-sparcv9.tar.gz", + "name": "jdk-7u25-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u25-b15/jdk-7u25-solaris-x64.tar.gz", + "name": "jdk-7u25-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u25-b17/jdk-7u25-windows-i586.exe", + "name": "jdk-7u25-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u25-b17/jdk-7u25-windows-x64.exe", + "name": "jdk-7u25-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u25-oth-JPR", + "title": "Java SE Development Kit 7u25" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u21-b11/jdk-7u21-linux-arm-sfp.tar.gz", + "name": "jdk-7u21-linux-arm-sfp.tar.gz", + "title": "Linux ARM v6/v7 Soft Float ABI" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u21-b11/jdk-7u21-linux-i586.tar.gz", + "name": "jdk-7u21-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u21-b11/jdk-7u21-linux-x64.tar.gz", + "name": "jdk-7u21-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u21-b12/jdk-7u21-macosx-x64.dmg", + "name": "jdk-7u21-macosx-x64.dmg", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u21-b11/jdk-7u21-solaris-i586.tar.gz", + "name": "jdk-7u21-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u21-b11/jdk-7u21-solaris-sparc.tar.gz", + "name": "jdk-7u21-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u21-b11/jdk-7u21-solaris-sparcv9.tar.gz", + "name": "jdk-7u21-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u21-b11/jdk-7u21-solaris-x64.tar.gz", + "name": "jdk-7u21-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u21-b11/jdk-7u21-windows-i586.exe", + "name": "jdk-7u21-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u21-b11/jdk-7u21-windows-x64.exe", + "name": "jdk-7u21-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u21-oth-JPR", + "title": "Java SE Development Kit 7u21" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u17-b02/jdk-7u17-linux-i586.tar.gz", + "name": "jdk-7u17-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u17-b02/jdk-7u17-linux-x64.tar.gz", + "name": "jdk-7u17-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u17-b02/jdk-7u17-macosx-x64.dmg", + "name": "jdk-7u17-macosx-x64.dmg", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u17-b02/jdk-7u17-solaris-i586.tar.gz", + "name": "jdk-7u17-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u17-b02/jdk-7u17-solaris-sparc.tar.gz", + "name": "jdk-7u17-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u17-b02/jdk-7u17-solaris-sparcv9.tar.gz", + "name": "jdk-7u17-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u17-b02/jdk-7u17-solaris-x64.tar.gz", + "name": "jdk-7u17-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u17-b02/jdk-7u17-windows-i586.exe", + "name": "jdk-7u17-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u17-b02/jdk-7u17-windows-x64.exe", + "name": "jdk-7u17-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u17-oth-JPR", + "title": "Java SE Development Kit 7u17" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u15-b03/jdk-7u15-linux-i586.tar.gz", + "name": "jdk-7u15-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u15-b03/jdk-7u15-linux-x64.tar.gz", + "name": "jdk-7u15-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u15-b03/jdk-7u15-macosx-x64.dmg", + "name": "jdk-7u15-macosx-x64.dmg", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u15-b03/jdk-7u15-solaris-i586.tar.gz", + "name": "jdk-7u15-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u15-b03/jdk-7u15-solaris-sparc.tar.gz", + "name": "jdk-7u15-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u15-b03/jdk-7u15-solaris-sparcv9.tar.gz", + "name": "jdk-7u15-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u15-b03/jdk-7u15-solaris-x64.tar.gz", + "name": "jdk-7u15-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u15-b03/jdk-7u15-windows-i586.exe", + "name": "jdk-7u15-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u15-b03/jdk-7u15-windows-x64.exe", + "name": "jdk-7u15-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u15-oth-JPR", + "title": "Java SE Development Kit 7u15" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-linux-i586.tar.gz", + "name": "jdk-7u13-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-linux-x64.tar.gz", + "name": "jdk-7u13-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-macosx-x64.dmg", + "name": "jdk-7u13-macosx-x64.dmg", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-solaris-i586.tar.gz", + "name": "jdk-7u13-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-solaris-sparc.tar.gz", + "name": "jdk-7u13-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-solaris-sparcv9.tar.gz", + "name": "jdk-7u13-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-solaris-x64.tar.gz", + "name": "jdk-7u13-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-windows-i586.exe", + "name": "jdk-7u13-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u13-b20/jdk-7u13-windows-x64.exe", + "name": "jdk-7u13-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u13-oth-JPR", + "title": "Java SE Development Kit 7u13" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u11-b21/jdk-7u11-linux-i586.tar.gz", + "name": "jdk-7u11-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u11-b21/jdk-7u11-linux-x64.tar.gz", + "name": "jdk-7u11-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u11-b21/jdk-7u11-macosx-x64.dmg", + "name": "jdk-7u11-macosx-x64.dmg", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u11-b21/jdk-7u11-macosx-x64.tar.gz", + "name": "jdk-7u11-macosx-x64.tar.gz", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u11-b21/jdk-7u11-solaris-i586.tar.gz", + "name": "jdk-7u11-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u11-b21/jdk-7u11-solaris-sparc.tar.gz", + "name": "jdk-7u11-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u11-b21/jdk-7u11-solaris-sparcv9.tar.gz", + "name": "jdk-7u11-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u11-b21/jdk-7u11-solaris-x64.tar.gz", + "name": "jdk-7u11-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u11-b21/jdk-7u11-windows-i586.exe", + "name": "jdk-7u11-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u11-b21/jdk-7u11-windows-x64.exe", + "name": "jdk-7u11-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u11-oth-JPR", + "title": "Java SE Development Kit 7u11" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u10-b18/jdk-7u10-linux-arm-sfp.tar.gz", + "name": "jdk-7u10-linux-arm-sfp.tar.gz", + "title": "Linux ARM" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u10-b18/jdk-7u10-linux-i586.tar.gz", + "name": "jdk-7u10-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u10-b18/jdk-7u10-linux-x64.tar.gz", + "name": "jdk-7u10-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u10-b18/jdk-7u10-macosx-x64.dmg", + "name": "jdk-7u10-macosx-x64.dmg", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u10-b18/jdk-7u10-solaris-i586.tar.gz", + "name": "jdk-7u10-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u10-b18/jdk-7u10-solaris-sparc.tar.gz", + "name": "jdk-7u10-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u10-b18/jdk-7u10-solaris-sparcv9.tar.gz", + "name": "jdk-7u10-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u10-b18/jdk-7u10-solaris-x64.tar.gz", + "name": "jdk-7u10-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u10-b18/jdk-7u10-windows-i586.exe", + "name": "jdk-7u10-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u10-b18/jdk-7u10-windows-x64.exe", + "name": "jdk-7u10-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u10-oth-JPR", + "title": "Java SE Development Kit 7u10" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u9-b05/jdk-7u9-linux-i586.tar.gz", + "name": "jdk-7u9-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u9-b05/jdk-7u9-linux-x64.tar.gz", + "name": "jdk-7u9-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u9-b05/jdk-7u9-macosx-x64.dmg", + "name": "jdk-7u9-macosx-x64.dmg", + "title": "Mac OS X" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u9-b05/jdk-7u9-solaris-i586.tar.gz", + "name": "jdk-7u9-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u9-b05/jdk-7u9-solaris-sparc.tar.gz", + "name": "jdk-7u9-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u9-b05/jdk-7u9-solaris-sparcv9.tar.gz", + "name": "jdk-7u9-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u9-b05/jdk-7u9-solaris-x64.tar.gz", + "name": "jdk-7u9-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u9-b05/jdk-7u9-windows-i586.exe", + "name": "jdk-7u9-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u9-b05/jdk-7u9-windows-x64.exe", + "name": "jdk-7u9-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u9-oth-JPR", + "title": "Java SE Development Kit 7u9" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u7-b10/jdk-7u7-linux-i586.tar.gz", + "name": "jdk-7u7-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u7-b10/jdk-7u7-linux-x64.tar.gz", + "name": "jdk-7u7-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u7-b10/jdk-7u7-macosx-x64.dmg", + "name": "jdk-7u7-macosx-x64.dmg", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u7-b10/jdk-7u7-solaris-i586.tar.gz", + "name": "jdk-7u7-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u7-b10/jdk-7u7-solaris-sparc.tar.gz", + "name": "jdk-7u7-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u7-b10/jdk-7u7-solaris-sparcv9.tar.gz", + "name": "jdk-7u7-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u7-b10/jdk-7u7-solaris-x64.tar.gz", + "name": "jdk-7u7-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u7-b11/jdk-7u7-windows-i586.exe", + "name": "jdk-7u7-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u7-b11/jdk-7u7-windows-x64.exe", + "name": "jdk-7u7-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u7-oth-JPR", + "title": "Java SE Development Kit 7u7" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u6-b24/jdk-7u6-linux-arm-sfp.tar.gz", + "name": "jdk-7u6-linux-arm-sfp.tar.gz", + "title": "Linux ARM" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u6-b24/jdk-7u6-linux-i586.tar.gz", + "name": "jdk-7u6-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u6-b24/jdk-7u6-linux-x64.tar.gz", + "name": "jdk-7u6-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u6-b24/jdk-7u6-macosx-x64.dmg", + "name": "jdk-7u6-macosx-x64.dmg", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u6-b24/jdk-7u6-solaris-i586.tar.gz", + "name": "jdk-7u6-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u6-b24/jdk-7u6-solaris-sparc.tar.gz", + "name": "jdk-7u6-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u6-b24/jdk-7u6-solaris-sparcv9.tar.gz", + "name": "jdk-7u6-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u6-b24/jdk-7u6-solaris-x64.tar.gz", + "name": "jdk-7u6-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u6-b24/jdk-7u6-windows-i586.exe", + "name": "jdk-7u6-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u6-b24/jdk-7u6-windows-x64.exe", + "name": "jdk-7u6-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u6-oth-JPR", + "title": "Java SE Development Kit 7u6" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u5-b06/jdk-7u5-linux-i586.tar.gz", + "name": "jdk-7u5-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u5-b06/jdk-7u5-linux-x64.tar.gz", + "name": "jdk-7u5-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u5-b06/jdk-7u5-macosx-x64.dmg", + "name": "jdk-7u5-macosx-x64.dmg", + "title": "Mac OS X x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u5-b06/jdk-7u5-solaris-i586.tar.gz", + "name": "jdk-7u5-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u5-b06/jdk-7u5-solaris-sparc.tar.gz", + "name": "jdk-7u5-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u5-b06/jdk-7u5-solaris-sparcv9.tar.gz", + "name": "jdk-7u5-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u5-b06/jdk-7u5-solaris-x64.tar.gz", + "name": "jdk-7u5-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u5-b06/jdk-7u5-windows-i586.exe", + "name": "jdk-7u5-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u5-b06/jdk-7u5-windows-x64.exe", + "name": "jdk-7u5-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u5-oth-JPR", + "title": "Java SE Development Kit 7u5" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u4-b20/jdk-7u4-linux-i586.tar.gz", + "name": "jdk-7u4-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u4-b20/jdk-7u4-linux-x64.tar.gz", + "name": "jdk-7u4-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u4-b21/jdk-7u4-macosx-x64.dmg", + "name": "jdk-7u4-macosx-x64.dmg", + "title": "Macosx-x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u4-b20/jdk-7u4-solaris-i586.tar.gz", + "name": "jdk-7u4-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u4-b20/jdk-7u4-solaris-sparc.tar.gz", + "name": "jdk-7u4-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u4-b20/jdk-7u4-solaris-sparcv9.tar.gz", + "name": "jdk-7u4-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u4-b20/jdk-7u4-solaris-x64.tar.gz", + "name": "jdk-7u4-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u4-b22/jdk-7u4-windows-i586.exe", + "name": "jdk-7u4-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u4-b22/jdk-7u4-windows-x64.exe", + "name": "jdk-7u4-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u4-oth-JPR", + "title": "Java SE Development Kit 7u4" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u3-b04/jdk-7u3-linux-i586.tar.gz", + "name": "jdk-7u3-linux-i586.tar.gz", + "title": "Linux x86 (32-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u3-b04/jdk-7u3-linux-x64.tar.gz", + "name": "jdk-7u3-linux-x64.tar.gz", + "title": "Linux x64 (64-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u3-b04/jdk-7u3-solaris-i586.tar.gz", + "name": "jdk-7u3-solaris-i586.tar.gz", + "title": "Solaris x86 (32-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u3-b04/jdk-7u3-solaris-sparc.tar.gz", + "name": "jdk-7u3-solaris-sparc.tar.gz", + "title": "Solaris SPARC (32-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u3-b04/jdk-7u3-solaris-sparcv9.tar.gz", + "name": "jdk-7u3-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC (64-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u3-b04/jdk-7u3-solaris-x64.tar.gz", + "name": "jdk-7u3-solaris-x64.tar.gz", + "title": "Solaris x64 (64-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u3-b05/jdk-7u3-windows-i586.exe", + "name": "jdk-7u3-windows-i586.exe", + "title": "Windows x86 (32-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u3-b05/jdk-7u3-windows-x64.exe", + "name": "jdk-7u3-windows-x64.exe", + "title": "Windows x64 (64-bit)" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u3-oth-JPR", + "title": "Java SE Development Kit 7u3" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u2-b13/jdk-7u2-linux-i586.tar.gz", + "name": "jdk-7u2-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u2-b13/jdk-7u2-linux-x64.tar.gz", + "name": "jdk-7u2-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u2-b13/jdk-7u2-solaris-i586.tar.gz", + "name": "jdk-7u2-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u2-b13/jdk-7u2-solaris-sparc.tar.gz", + "name": "jdk-7u2-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u2-b13/jdk-7u2-solaris-sparcv9.tar.gz", + "name": "jdk-7u2-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u2-b13/jdk-7u2-solaris-x64.tar.gz", + "name": "jdk-7u2-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u2-b13/jdk-7u2-windows-i586.exe", + "name": "jdk-7u2-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u2-b13/jdk-7u2-windows-x64.exe", + "name": "jdk-7u2-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u2-oth-JPR", + "title": "Java SE Development Kit 7u2" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u1-b08/jdk-7u1-linux-i586.tar.gz", + "name": "jdk-7u1-linux-i586.tar.gz", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u1-b08/jdk-7u1-linux-x64.tar.gz", + "name": "jdk-7u1-linux-x64.tar.gz", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u1-b08/jdk-7u1-solaris-i586.tar.gz", + "name": "jdk-7u1-solaris-i586.tar.gz", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u1-b08/jdk-7u1-solaris-sparc.tar.gz", + "name": "jdk-7u1-solaris-sparc.tar.gz", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u1-b08/jdk-7u1-solaris-sparcv9.tar.gz", + "name": "jdk-7u1-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u1-b08/jdk-7u1-solaris-x64.tar.gz", + "name": "jdk-7u1-solaris-x64.tar.gz", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u1-b08/jdk-7u1-windows-i586.exe", + "name": "jdk-7u1-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7u1-b08/jdk-7u1-windows-x64.exe", + "name": "jdk-7u1-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7u1-oth-JPR", + "title": "Java SE Development Kit 7u1" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/7/jdk-7-linux-i586.tar.gz", + "name": "jdk-7-linux-i586.tar.gz", + "title": "Linux x86 - Compressed Binary" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7/jdk-7-linux-x64.tar.gz", + "name": "jdk-7-linux-x64.tar.gz", + "title": "Linux x64 - Compressed Binary" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7/jdk-7-solaris-i586.tar.gz", + "name": "jdk-7-solaris-i586.tar.gz", + "title": "Solaris x86 - Compressed Binary" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7/jdk-7-solaris-sparc.tar.gz", + "name": "jdk-7-solaris-sparc.tar.gz", + "title": "Solaris SPARC - Compressed Binary" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7/jdk-7-solaris-sparcv9.tar.gz", + "name": "jdk-7-solaris-sparcv9.tar.gz", + "title": "Solaris SPARC 64-bit - Compressed Binary" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7/jdk-7-solaris-x64.tar.gz", + "name": "jdk-7-solaris-x64.tar.gz", + "title": "Solaris x64 - Compressed Binary" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7/jdk-7-windows-i586.exe", + "name": "jdk-7-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/7/jdk-7-windows-x64.exe", + "name": "jdk-7-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-7-oth-JPR", + "title": "Java SE Development Kit 7" + } + ] + }, + { + "name": "JDK 6", + "releases": [ + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-i586.bin", + "name": "jdk-6u45-linux-i586.bin", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-ia64.bin", + "name": "jdk-6u45-linux-ia64.bin", + "title": "Linux Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin", + "name": "jdk-6u45-linux-x64.bin", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-solaris-i586.sh", + "name": "jdk-6u45-solaris-i586.sh", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-solaris-sparc.sh", + "name": "jdk-6u45-solaris-sparc.sh", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-solaris-sparcv9.sh", + "name": "jdk-6u45-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-solaris-x64.sh", + "name": "jdk-6u45-solaris-x64.sh", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-windows-i586.exe", + "name": "jdk-6u45-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-windows-ia64.exe", + "name": "jdk-6u45-windows-ia64.exe", + "title": "Windows Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-windows-x64.exe", + "name": "jdk-6u45-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u45-oth-JPR", + "title": "Java SE Development Kit 6u45" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u43-b01/jdk-6u43-linux-i586.bin", + "name": "jdk-6u43-linux-i586.bin", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u43-b01/jdk-6u43-linux-ia64.bin", + "name": "jdk-6u43-linux-ia64.bin", + "title": "Linux Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u43-b01/jdk-6u43-linux-x64.bin", + "name": "jdk-6u43-linux-x64.bin", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u43-b01/jdk-6u43-solaris-i586.sh", + "name": "jdk-6u43-solaris-i586.sh", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u43-b01/jdk-6u43-solaris-sparc.sh", + "name": "jdk-6u43-solaris-sparc.sh", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u43-b01/jdk-6u43-solaris-sparcv9.sh", + "name": "jdk-6u43-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u43-b01/jdk-6u43-solaris-x64.sh", + "name": "jdk-6u43-solaris-x64.sh", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u43-b01/jdk-6u43-windows-i586.exe", + "name": "jdk-6u43-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u43-b01/jdk-6u43-windows-ia64.exe", + "name": "jdk-6u43-windows-ia64.exe", + "title": "Windows Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u43-b01/jdk-6u43-windows-x64.exe", + "name": "jdk-6u43-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u43-oth-JPR", + "title": "Java SE Development Kit 6u43" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u41-b02/jdk-6u41-linux-i586.bin", + "name": "jdk-6u41-linux-i586.bin", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u41-b02/jdk-6u41-linux-ia64.bin", + "name": "jdk-6u41-linux-ia64.bin", + "title": "Linux Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u41-b02/jdk-6u41-linux-x64.bin", + "name": "jdk-6u41-linux-x64.bin", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u41-b02/jdk-6u41-solaris-i586.sh", + "name": "jdk-6u41-solaris-i586.sh", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u41-b02/jdk-6u41-solaris-sparc.sh", + "name": "jdk-6u41-solaris-sparc.sh", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u41-b02/jdk-6u41-solaris-sparcv9.sh", + "name": "jdk-6u41-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u41-b02/jdk-6u41-solaris-x64.sh", + "name": "jdk-6u41-solaris-x64.sh", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u41-b02/jdk-6u41-windows-i586.exe", + "name": "jdk-6u41-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u41-b02/jdk-6u41-windows-ia64.exe", + "name": "jdk-6u41-windows-ia64.exe", + "title": "Windows Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u41-b02/jdk-6u41-windows-x64.exe", + "name": "jdk-6u41-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u41-oth-JPR", + "title": "Java SE Development Kit 6u41" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-linux-i586.bin", + "name": "jdk-6u39-linux-i586.bin", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-linux-ia64.bin", + "name": "jdk-6u39-linux-ia64.bin", + "title": "Linux Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-linux-x64.bin", + "name": "jdk-6u39-linux-x64.bin", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-solaris-i586.sh", + "name": "jdk-6u39-solaris-i586.sh", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-solaris-sparc.sh", + "name": "jdk-6u39-solaris-sparc.sh", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-solaris-sparcv9.sh", + "name": "jdk-6u39-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-solaris-x64.sh", + "name": "jdk-6u39-solaris-x64.sh", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-windows-i586.exe", + "name": "jdk-6u39-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-windows-ia64.exe", + "name": "jdk-6u39-windows-ia64.exe", + "title": "Windows Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u39-b04/jdk-6u39-windows-x64.exe", + "name": "jdk-6u39-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u39-oth-JPR", + "title": "Java SE Development Kit 6u39" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u38-b05/jdk-6u38-linux-i586.bin", + "name": "jdk-6u38-linux-i586.bin", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u38-b05/jdk-6u38-linux-x64.bin", + "name": "jdk-6u38-linux-x64.bin", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u38-b05/jdk-6u38-solaris-i586.sh", + "name": "jdk-6u38-solaris-i586.sh", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u38-b05/jdk-6u38-solaris-sparc.sh", + "name": "jdk-6u38-solaris-sparc.sh", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u38-b05/jdk-6u38-solaris-sparcv9.sh", + "name": "jdk-6u38-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u38-b05/jdk-6u38-solaris-x64.sh", + "name": "jdk-6u38-solaris-x64.sh", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u38-b05/jdk-6u38-windows-i586.exe", + "name": "jdk-6u38-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u38-b05/jdk-6u38-windows-x64.exe", + "name": "jdk-6u38-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u38-oth-JPR", + "title": "Java SE Development Kit 6u38" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u37-b06/jdk-6u37-linux-i586.bin", + "name": "jdk-6u37-linux-i586.bin", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u37-b06/jdk-6u37-linux-ia64.bin", + "name": "jdk-6u37-linux-ia64.bin", + "title": "Linux Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u37-b06/jdk-6u37-linux-x64.bin", + "name": "jdk-6u37-linux-x64.bin", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u37-b06/jdk-6u37-solaris-i586.sh", + "name": "jdk-6u37-solaris-i586.sh", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u37-b06/jdk-6u37-solaris-sparc.sh", + "name": "jdk-6u37-solaris-sparc.sh", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u37-b06/jdk-6u37-solaris-sparcv9.sh", + "name": "jdk-6u37-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u37-b06/jdk-6u37-solaris-x64.sh", + "name": "jdk-6u37-solaris-x64.sh", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u37-b06/jdk-6u37-windows-i586.exe", + "name": "jdk-6u37-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u37-b06/jdk-6u37-windows-ia64.exe", + "name": "jdk-6u37-windows-ia64.exe", + "title": "Windows Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u37-b06/jdk-6u37-windows-x64.exe", + "name": "jdk-6u37-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u37-oth-JPR", + "title": "Java SE Development Kit 6u37" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u35-b10/jdk-6u35-linux-i586.bin", + "name": "jdk-6u35-linux-i586.bin", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u35-b10/jdk-6u35-linux-ia64.bin", + "name": "jdk-6u35-linux-ia64.bin", + "title": "Linux Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u35-b10/jdk-6u35-linux-x64.bin", + "name": "jdk-6u35-linux-x64.bin", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u35-b10/jdk-6u35-solaris-i586.sh", + "name": "jdk-6u35-solaris-i586.sh", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u35-b10/jdk-6u35-solaris-sparc.sh", + "name": "jdk-6u35-solaris-sparc.sh", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u35-b10/jdk-6u35-solaris-sparcv9.sh", + "name": "jdk-6u35-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u35-b10/jdk-6u35-solaris-x64.sh", + "name": "jdk-6u35-solaris-x64.sh", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u35-b10/jdk-6u35-windows-i586.exe", + "name": "jdk-6u35-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u35-b10/jdk-6u35-windows-ia64.exe", + "name": "jdk-6u35-windows-ia64.exe", + "title": "Windows Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u35-b10/jdk-6u35-windows-x64.exe", + "name": "jdk-6u35-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u35-oth-JPR", + "title": "Java SE Development Kit 6u35" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u34-b04/jdk-6u34-linux-i586.bin", + "name": "jdk-6u34-linux-i586.bin", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u34-b04/jdk-6u34-linux-x64.bin", + "name": "jdk-6u34-linux-x64.bin", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u34-b04/jdk-6u34-solaris-i586.sh", + "name": "jdk-6u34-solaris-i586.sh", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u34-b04/jdk-6u34-solaris-sparc.sh", + "name": "jdk-6u34-solaris-sparc.sh", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u34-b04/jdk-6u34-solaris-sparcv9.sh", + "name": "jdk-6u34-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u34-b04/jdk-6u34-solaris-x64.sh", + "name": "jdk-6u34-solaris-x64.sh", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u34-b04/jdk-6u34-windows-i586.exe", + "name": "jdk-6u34-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u34-b04/jdk-6u34-windows-x64.exe", + "name": "jdk-6u34-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u34-oth-JPR", + "title": "Java SE Development Kit 6u34" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u33-b04/jdk-6u33-linux-i586.bin", + "name": "jdk-6u33-linux-i586.bin", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn-pub/java/jdk/6u33-b03/jdk-6u33-linux-ia64.bin", + "name": "jdk-6u33-linux-ia64.bin", + "title": "Linux Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u33-b04/jdk-6u33-linux-x64.bin", + "name": "jdk-6u33-linux-x64.bin", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u33-b04/jdk-6u33-solaris-i586.sh", + "name": "jdk-6u33-solaris-i586.sh", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u33-b04/jdk-6u33-solaris-sparc.sh", + "name": "jdk-6u33-solaris-sparc.sh", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u33-b04/jdk-6u33-solaris-sparcv9.sh", + "name": "jdk-6u33-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u33-b04/jdk-6u33-solaris-x64.sh", + "name": "jdk-6u33-solaris-x64.sh", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u33-b05/jdk-6u33-windows-i586.exe", + "name": "jdk-6u33-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn-pub/java/jdk/6u33-b03/jdk-6u33-windows-ia64.exe", + "name": "jdk-6u33-windows-ia64.exe", + "title": "Windows Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u33-b05/jdk-6u33-windows-x64.exe", + "name": "jdk-6u33-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u33-oth-JPR", + "title": "Java SE Development Kit 6u33" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u32-b05/jdk-6u32-linux-i586.bin", + "name": "jdk-6u32-linux-i586.bin", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u32-b05/jdk-6u32-linux-x64.bin", + "name": "jdk-6u32-linux-x64.bin", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u32-b05/jdk-6u32-solaris-i586.sh", + "name": "jdk-6u32-solaris-i586.sh", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u32-b05/jdk-6u32-solaris-sparc.sh", + "name": "jdk-6u32-solaris-sparc.sh", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u32-b05/jdk-6u32-solaris-sparcv9.sh", + "name": "jdk-6u32-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u32-b05/jdk-6u32-solaris-x64.sh", + "name": "jdk-6u32-solaris-x64.sh", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u32-b05/jdk-6u32-windows-i586.exe", + "name": "jdk-6u32-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u32-b05/jdk-6u32-windows-x64.exe", + "name": "jdk-6u32-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u32-oth-JPR", + "title": "Java SE Development Kit 6u32" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u31-b04/jdk-6u31-linux-i586.bin", + "name": "jdk-6u31-linux-i586.bin", + "title": "Linux x86 (32-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u31-b04/jdk-6u31-linux-ia64.bin", + "name": "jdk-6u31-linux-ia64.bin", + "title": "Linux Intel Itanium (64-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u31-b04/jdk-6u31-linux-x64.bin", + "name": "jdk-6u31-linux-x64.bin", + "title": "Linux x64 (64-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u31-b04/jdk-6u31-solaris-i586.sh", + "name": "jdk-6u31-solaris-i586.sh", + "title": "Solaris x86 (32-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u31-b04/jdk-6u31-solaris-sparc.sh", + "name": "jdk-6u31-solaris-sparc.sh", + "title": "Solaris SPARC (32-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u31-b04/jdk-6u31-solaris-sparcv9.sh", + "name": "jdk-6u31-solaris-sparcv9.sh", + "title": "Solaris SPARC (64-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u31-b04/jdk-6u31-solaris-x64.sh", + "name": "jdk-6u31-solaris-x64.sh", + "title": "Solaris x64 (64-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u31-b05/jdk-6u31-windows-i586.exe", + "name": "jdk-6u31-windows-i586.exe", + "title": "Windows x86 (32-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u31-b05/jdk-6u31-windows-ia64.exe", + "name": "jdk-6u31-windows-ia64.exe", + "title": "Windows Intel Itanium (64-bit)" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u31-b05/jdk-6u31-windows-x64.exe", + "name": "jdk-6u31-windows-x64.exe", + "title": "Windows x64 (64-bit)" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u31-oth-JPR", + "title": "Java SE Development Kit 6u31" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u30-b12/jdk-6u30-linux-i586.bin", + "name": "jdk-6u30-linux-i586.bin", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u30-b12/jdk-6u30-linux-x64.bin", + "name": "jdk-6u30-linux-x64.bin", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u30-b12/jdk-6u30-solaris-i586.sh", + "name": "jdk-6u30-solaris-i586.sh", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u30-b12/jdk-6u30-solaris-sparc.sh", + "name": "jdk-6u30-solaris-sparc.sh", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u30-b12/jdk-6u30-solaris-sparcv9.sh", + "name": "jdk-6u30-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u30-b12/jdk-6u30-solaris-x64.sh", + "name": "jdk-6u30-solaris-x64.sh", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u30-b12/jdk-6u30-windows-i586.exe", + "name": "jdk-6u30-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u30-b12/jdk-6u30-windows-x64.exe", + "name": "jdk-6u30-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u30-oth-JPR", + "title": "Java SE Development Kit 6u30" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u29-b11/jdk-6u29-linux-i586.bin", + "name": "jdk-6u29-linux-i586.bin", + "title": "Linux x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u29-b11/jdk-6u29-linux-ia64.bin", + "name": "jdk-6u29-linux-ia64.bin", + "title": "Linux Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u29-b11/jdk-6u29-linux-x64.bin", + "name": "jdk-6u29-linux-x64.bin", + "title": "Linux x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u29-b11/jdk-6u29-solaris-i586.sh", + "name": "jdk-6u29-solaris-i586.sh", + "title": "Solaris x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u29-b11/jdk-6u29-solaris-sparc.sh", + "name": "jdk-6u29-solaris-sparc.sh", + "title": "Solaris SPARC" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u29-b11/jdk-6u29-solaris-sparcv9.sh", + "name": "jdk-6u29-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u29-b11/jdk-6u29-solaris-x64.sh", + "name": "jdk-6u29-solaris-x64.sh", + "title": "Solaris x64" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u29-b11/jdk-6u29-windows-i586.exe", + "name": "jdk-6u29-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u29-b11/jdk-6u29-windows-ia64.exe", + "name": "jdk-6u29-windows-ia64.exe", + "title": "Windows Intel Itanium" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u29-b11/jdk-6u29-windows-x64.exe", + "name": "jdk-6u29-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u29-oth-JPR", + "path": "http://download.oracle.com/otn/java/jdk/6u29-b11/", + "title": "Java SE Development Kit 6u29" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u27-b07/jdk-6u27-linux-i586.bin", + "name": "jdk-6u27-linux-i586.bin", + "title": "Linux x86 - Self Extracting Installer" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u27-b07/jdk-6u27-linux-x64.bin", + "name": "jdk-6u27-linux-x64.bin", + "title": "Linux x64 - Self Extracting Installer" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u27-b07/jdk-6u27-solaris-i586.sh", + "name": "jdk-6u27-solaris-i586.sh", + "title": "Solaris x86 - Self Extracting Binary" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u27-b07/jdk-6u27-solaris-sparc.sh", + "name": "jdk-6u27-solaris-sparc.sh", + "title": "Solaris SPARC - Self Extracting Binary" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u27-b07/jdk-6u27-solaris-sparcv9.sh", + "name": "jdk-6u27-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit - Self Extracting Binary" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u27-b07/jdk-6u27-solaris-x64.sh", + "name": "jdk-6u27-solaris-x64.sh", + "title": "Solaris x64 - Self Extracting Binary" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u27-b07/jdk-6u27-windows-i586.exe", + "name": "jdk-6u27-windows-i586.exe", + "title": "Windows x86" + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u27-b07/jdk-6u27-windows-x64.exe", + "name": "jdk-6u27-windows-x64.exe", + "title": "Windows x64" + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u27-oth-JPR", + "path": "http://download.oracle.com/otn/java/jdk/6u27-b07/", + "title": "Java SE Development Kit 6u27" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u26-b03/jdk-6u26-linux-i586.bin", + "name": "jdk-6u26-linux-i586.bin", + "title": "Java SE Development Kit 6u26 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u26-b03/jdk-6u26-linux-ia64.bin", + "name": "jdk-6u26-linux-ia64.bin", + "title": "Java SE Development Kit 6u26 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u26-b03/jdk-6u26-linux-x64.bin", + "name": "jdk-6u26-linux-x64.bin", + "title": "Java SE Development Kit 6u26 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u26-b03/jdk-6u26-solaris-i586.sh", + "name": "jdk-6u26-solaris-i586.sh", + "title": "Java SE Development Kit 6u26 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u26-b03/jdk-6u26-solaris-sparc.sh", + "name": "jdk-6u26-solaris-sparc.sh", + "title": "Java SE Development Kit 6u26 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u26-b03/jdk-6u26-solaris-sparcv9.sh", + "name": "jdk-6u26-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u26 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u26-b03/jdk-6u26-solaris-x64.sh", + "name": "jdk-6u26-solaris-x64.sh", + "title": "Java SE Development Kit 6u26 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u26-b03/jdk-6u26-windows-i586.exe", + "name": "jdk-6u26-windows-i586.exe", + "title": "Java SE Development Kit 6u26 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u26-b03/jdk-6u26-windows-ia64.exe", + "name": "jdk-6u26-windows-ia64.exe", + "title": "Java SE Development Kit 6u26 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u26-b03/jdk-6u26-windows-x64.exe", + "name": "jdk-6u26-windows-x64.exe", + "title": "Java SE Development Kit 6u26 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u26-oth-JPR", + "title": "Java SE Development Kit 6u26" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u25-b06/jdk-6u25-linux-i586.bin", + "name": "jdk-6u25-linux-i586.bin", + "title": "Java SE Development Kit 6u25 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u25-b06/jdk-6u25-linux-x64.bin", + "name": "jdk-6u25-linux-x64.bin", + "title": "Java SE Development Kit 6u25 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u25-b06/jdk-6u25-solaris-i586.sh", + "name": "jdk-6u25-solaris-i586.sh", + "title": "Java SE Development Kit 6u25 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u25-b06/jdk-6u25-solaris-sparc.sh", + "name": "jdk-6u25-solaris-sparc.sh", + "title": "Java SE Development Kit 6u25 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u25-b06/jdk-6u25-solaris-sparcv9.sh", + "name": "jdk-6u25-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u25 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u25-b06/jdk-6u25-solaris-x64.sh", + "name": "jdk-6u25-solaris-x64.sh", + "title": "Java SE Development Kit 6u25 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u25-b06/jdk-6u25-windows-i586.exe", + "name": "jdk-6u25-windows-i586.exe", + "title": "Java SE Development Kit 6u25 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u25-b06/jdk-6u25-windows-x64.exe", + "name": "jdk-6u25-windows-x64.exe", + "title": "Java SE Development Kit 6u25 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u25-oth-JPR", + "title": "Java SE Development Kit 6u25" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u24-b07/jdk-6u24-linux-i586.bin", + "name": "jdk-6u24-linux-i586.bin", + "title": "Java SE Development Kit 6u24 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u24-b07/jdk-6u24-linux-ia64.bin", + "name": "jdk-6u24-linux-ia64.bin", + "title": "Java SE Development Kit 6u24 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u24-b07/jdk-6u24-linux-x64.bin", + "name": "jdk-6u24-linux-x64.bin", + "title": "Java SE Development Kit 6u24 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u24-b07/jdk-6u24-solaris-i586.sh", + "name": "jdk-6u24-solaris-i586.sh", + "title": "Java SE Development Kit 6u24 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u24-b07/jdk-6u24-solaris-sparc.sh", + "name": "jdk-6u24-solaris-sparc.sh", + "title": "Java SE Development Kit 6u24 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u24-b07/jdk-6u24-solaris-sparcv9.sh", + "name": "jdk-6u24-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u24 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u24-b07/jdk-6u24-solaris-x64.sh", + "name": "jdk-6u24-solaris-x64.sh", + "title": "Java SE Development Kit 6u24 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u24-b07/jdk-6u24-windows-i586.exe", + "name": "jdk-6u24-windows-i586.exe", + "title": "Java SE Development Kit 6u24 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u24-b07/jdk-6u24-windows-ia64.exe", + "name": "jdk-6u24-windows-ia64.exe", + "title": "Java SE Development Kit 6u24 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u24-b07/jdk-6u24-windows-x64.exe", + "name": "jdk-6u24-windows-x64.exe", + "title": "Java SE Development Kit 6u24 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u24-oth-JPR", + "title": "Java SE Development Kit 6u24" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u23-b05/jdk-6u23-linux-i586.bin", + "name": "jdk-6u23-linux-i586.bin", + "title": "Java SE Development Kit 6u23 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u23-b05/jdk-6u23-linux-x64.bin", + "name": "jdk-6u23-linux-x64.bin", + "title": "Java SE Development Kit 6u23 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u23-b05/jdk-6u23-solaris-i586.sh", + "name": "jdk-6u23-solaris-i586.sh", + "title": "Java SE Development Kit 6u23 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u23-b05/jdk-6u23-solaris-sparc.sh", + "name": "jdk-6u23-solaris-sparc.sh", + "title": "Java SE Development Kit 6u23 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u23-b05/jdk-6u23-solaris-sparcv9.sh", + "name": "jdk-6u23-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u23 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u23-b05/jdk-6u23-solaris-x64.sh", + "name": "jdk-6u23-solaris-x64.sh", + "title": "Java SE Development Kit 6u23 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u23-b05/jdk-6u23-windows-i586.exe", + "name": "jdk-6u23-windows-i586.exe", + "title": "Java SE Development Kit 6u23 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u23-b05/jdk-6u23-windows-x64.exe", + "name": "jdk-6u23-windows-x64.exe", + "title": "Java SE Development Kit 6u23 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u23-oth-JPR", + "title": "Java SE Development Kit 6u23" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u22-b04/jdk-6u22-linux-i586.bin", + "name": "jdk-6u22-linux-i586.bin", + "title": "Java SE Development Kit 6u22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u22-b04/jdk-6u22-linux-ia64.bin", + "name": "jdk-6u22-linux-ia64.bin", + "title": "Java SE Development Kit 6u22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u22-b04/jdk-6u22-linux-x64.bin", + "name": "jdk-6u22-linux-x64.bin", + "title": "Java SE Development Kit 6u22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u22-b04/jdk-6u22-solaris-i586.sh", + "name": "jdk-6u22-solaris-i586.sh", + "title": "Java SE Development Kit 6u22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u22-b04/jdk-6u22-solaris-sparc.sh", + "name": "jdk-6u22-solaris-sparc.sh", + "title": "Java SE Development Kit 6u22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u22-b04/jdk-6u22-solaris-sparcv9.sh", + "name": "jdk-6u22-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u22-b04/jdk-6u22-solaris-x64.sh", + "name": "jdk-6u22-solaris-x64.sh", + "title": "Java SE Development Kit 6u22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u22-b04/jdk-6u22-windows-i586.exe", + "name": "jdk-6u22-windows-i586.exe", + "title": "Java SE Development Kit 6u22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u22-b04/jdk-6u22-windows-ia64.exe", + "name": "jdk-6u22-windows-ia64.exe", + "title": "Java SE Development Kit 6u22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u22-b04/jdk-6u22-windows-x64.exe", + "name": "jdk-6u22-windows-x64.exe", + "title": "Java SE Development Kit 6u22 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u22-oth-JPR", + "title": "Java SE Development Kit 6u22" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u21-b07/jdk-6u21-linux-i586.bin", + "name": "jdk-6u21-linux-i586.bin", + "title": "Java SE Development Kit 6u21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u21-b07/jdk-6u21-linux-ia64.bin", + "name": "jdk-6u21-linux-ia64.bin", + "title": "Java SE Development Kit 6u21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u21-b07/jdk-6u21-linux-x64.bin", + "name": "jdk-6u21-linux-x64.bin", + "title": "Java SE Development Kit 6u21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u21-b07/jdk-6u21-solaris-i586.sh", + "name": "jdk-6u21-solaris-i586.sh", + "title": "Java SE Development Kit 6u21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u21-b07/jdk-6u21-solaris-sparc.sh", + "name": "jdk-6u21-solaris-sparc.sh", + "title": "Java SE Development Kit 6u21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u21-b07/jdk-6u21-solaris-sparcv9.sh", + "name": "jdk-6u21-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u21-b07/jdk-6u21-solaris-x64.sh", + "name": "jdk-6u21-solaris-x64.sh", + "title": "Java SE Development Kit 6u21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u21-b07/jdk-6u21-windows-i586.exe", + "name": "jdk-6u21-windows-i586.exe", + "title": "Java SE Development Kit 6u21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u21-b07/jdk-6u21-windows-ia64.exe", + "name": "jdk-6u21-windows-ia64.exe", + "title": "Java SE Development Kit 6u21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u21-b07/jdk-6u21-windows-x64.exe", + "name": "jdk-6u21-windows-x64.exe", + "title": "Java SE Development Kit 6u21 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u21-b07-oth-JPR", + "title": "Java SE Development Kit 6u21" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u20-b02/jdk-6u20-linux-i586.bin", + "name": "jdk-6u20-linux-i586.bin", + "title": "Java SE Development Kit 6u20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u20-b02/jdk-6u20-linux-ia64.bin", + "name": "jdk-6u20-linux-ia64.bin", + "title": "Java SE Development Kit 6u20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u20-b02/jdk-6u20-linux-x64.bin", + "name": "jdk-6u20-linux-x64.bin", + "title": "Java SE Development Kit 6u20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u20-b02/jdk-6u20-solaris-i586.sh", + "name": "jdk-6u20-solaris-i586.sh", + "title": "Java SE Development Kit 6u20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u20-b02/jdk-6u20-solaris-sparc.sh", + "name": "jdk-6u20-solaris-sparc.sh", + "title": "Java SE Development Kit 6u20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u20-b02/jdk-6u20-solaris-sparcv9.sh", + "name": "jdk-6u20-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u20-b02/jdk-6u20-solaris-x64.sh", + "name": "jdk-6u20-solaris-x64.sh", + "title": "Java SE Development Kit 6u20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u20-b02/jdk-6u20-windows-i586.exe", + "name": "jdk-6u20-windows-i586.exe", + "title": "Java SE Development Kit 6u20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u20-b02/jdk-6u20-windows-ia64.exe", + "name": "jdk-6u20-windows-ia64.exe", + "title": "Java SE Development Kit 6u20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u20-b02/jdk-6u20-windows-x64.exe", + "name": "jdk-6u20-windows-x64.exe", + "title": "Java SE Development Kit 6u20 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u20-oth-JPR", + "title": "Java SE Development Kit 6u20" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u19-b04/jdk-6u19-linux-i586.bin", + "name": "jdk-6u19-linux-i586.bin", + "title": "Java SE Development Kit 6u19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u19-b04/jdk-6u19-linux-ia64.bin", + "name": "jdk-6u19-linux-ia64.bin", + "title": "Java SE Development Kit 6u19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u19-b04/jdk-6u19-linux-x64.bin", + "name": "jdk-6u19-linux-x64.bin", + "title": "Java SE Development Kit 6u19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u19-b04/jdk-6u19-solaris-i586.sh", + "name": "jdk-6u19-solaris-i586.sh", + "title": "Java SE Development Kit 6u19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u19-b04/jdk-6u19-solaris-sparc.sh", + "name": "jdk-6u19-solaris-sparc.sh", + "title": "Java SE Development Kit 6u19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u19-b04/jdk-6u19-solaris-sparcv9.sh", + "name": "jdk-6u19-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u19-b04/jdk-6u19-solaris-x64.sh", + "name": "jdk-6u19-solaris-x64.sh", + "title": "Java SE Development Kit 6u19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u19-b04/jdk-6u19-windows-i586.exe", + "name": "jdk-6u19-windows-i586.exe", + "title": "Java SE Development Kit 6u19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u19-b04/jdk-6u19-windows-ia64.exe", + "name": "jdk-6u19-windows-ia64.exe", + "title": "Java SE Development Kit 6u19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u19-b04/jdk-6u19-windows-x64.exe", + "name": "jdk-6u19-windows-x64.exe", + "title": "Java SE Development Kit 6u19 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u19-oth-JPR", + "title": "Java SE Development Kit 6u19" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u18-b07/jdk-6u18-linux-i586.bin", + "name": "jdk-6u18-linux-i586.bin", + "title": "Java SE Development Kit 6u18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u18-b07/jdk-6u18-linux-ia64.bin", + "name": "jdk-6u18-linux-ia64.bin", + "title": "Java SE Development Kit 6u18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u18-b07/jdk-6u18-linux-x64.bin", + "name": "jdk-6u18-linux-x64.bin", + "title": "Java SE Development Kit 6u18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u18-b07/jdk-6u18-solaris-i586.sh", + "name": "jdk-6u18-solaris-i586.sh", + "title": "Java SE Development Kit 6u18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u18-b07/jdk-6u18-solaris-sparc.sh", + "name": "jdk-6u18-solaris-sparc.sh", + "title": "Java SE Development Kit 6u18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u18-b07/jdk-6u18-solaris-sparcv9.sh", + "name": "jdk-6u18-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u18-b07/jdk-6u18-solaris-x64.sh", + "name": "jdk-6u18-solaris-x64.sh", + "title": "Java SE Development Kit 6u18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jre/6u18-b79/jdk-6u18-windows-i586.exe", + "name": "jdk-6u18-windows-i586.exe", + "title": "Java SE Development Kit 6u18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u18-b07/jdk-6u18-windows-ia64.exe", + "name": "jdk-6u18-windows-ia64.exe", + "title": "Java SE Development Kit 6u18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u18-b07/jdk-6u18-windows-x64.exe", + "name": "jdk-6u18-windows-x64.exe", + "title": "Java SE Development Kit 6u18 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u18-oth-JPR", + "title": "Java SE Development Kit 6u18" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u17-b04/jdk-6u17-linux-i586.bin", + "name": "jdk-6u17-linux-i586.bin", + "title": "Java SE Development Kit 6u17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u17-b04/jdk-6u17-linux-ia64.bin", + "name": "jdk-6u17-linux-ia64.bin", + "title": "Java SE Development Kit 6u17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u17-b04/jdk-6u17-linux-x64.bin", + "name": "jdk-6u17-linux-x64.bin", + "title": "Java SE Development Kit 6u17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u17-b04/jdk-6u17-sla.pdf", + "name": "jdk-6u17-sla.pdf", + "title": "Software License Agreement " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u17-b04/jdk-6u17-solaris-i586.sh", + "name": "jdk-6u17-solaris-i586.sh", + "title": "Java SE Development Kit 6u17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u17-b04/jdk-6u17-solaris-sparc.sh", + "name": "jdk-6u17-solaris-sparc.sh", + "title": "Java SE Development Kit 6u17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u17-b04/jdk-6u17-solaris-sparcv9.sh", + "name": "jdk-6u17-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u17-b04/jdk-6u17-solaris-x64.sh", + "name": "jdk-6u17-solaris-x64.sh", + "title": "Java SE Development Kit 6u17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u17-b04/jdk-6u17-windows-i586.exe", + "name": "jdk-6u17-windows-i586.exe", + "title": "Java SE Development Kit 6u17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u17-b04/jdk-6u17-windows-ia64.exe", + "name": "jdk-6u17-windows-ia64.exe", + "title": "Java SE Development Kit 6u17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u17-b04/jdk-6u17-windows-x64.exe", + "name": "jdk-6u17-windows-x64.exe", + "title": "Java SE Development Kit 6u17 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u17-oth-JPR", + "title": "Java SE Development Kit 6u17" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u16-b01/jdk-6u16-linux-i586.bin", + "name": "jdk-6u16-linux-i586.bin", + "title": "Java SE Development Kit 6u16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u16-b01/jdk-6u16-linux-ia64.bin", + "name": "jdk-6u16-linux-ia64.bin", + "title": "Java SE Development Kit 6u16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u16-b01/jdk-6u16-linux-x64.bin", + "name": "jdk-6u16-linux-x64.bin", + "title": "Java SE Development Kit 6u16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u16-b01/jdk-6u16-solaris-i586.sh", + "name": "jdk-6u16-solaris-i586.sh", + "title": "Java SE Development Kit 6u16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u16-b01/jdk-6u16-solaris-sparc.sh", + "name": "jdk-6u16-solaris-sparc.sh", + "title": "Java SE Development Kit 6u16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u16-b01/jdk-6u16-solaris-sparcv9.sh", + "name": "jdk-6u16-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u16-b01/jdk-6u16-solaris-x64.sh", + "name": "jdk-6u16-solaris-x64.sh", + "title": "Java SE Development Kit 6u16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u16-b01/jdk-6u16-windows-i586.exe", + "name": "jdk-6u16-windows-i586.exe", + "title": "Java SE Development Kit 6u16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u16-b01/jdk-6u16-windows-ia64.exe", + "name": "jdk-6u16-windows-ia64.exe", + "title": "Java SE Development Kit 6u16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u16-b01/jdk-6u16-windows-x64.exe", + "name": "jdk-6u16-windows-x64.exe", + "title": "Java SE Development Kit 6u16 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u16-oth-JPR", + "title": "Java SE Development Kit 6u16" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u15-b03/jdk-6u15-linux-i586.bin", + "name": "jdk-6u15-linux-i586.bin", + "title": "Java SE Development Kit 6u15 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u15-b03/scott/jdk-6u15-linux-ia64.bin", + "name": "jdk-6u15-linux-ia64.bin", + "title": "Java SE Development Kit 6u15 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u15-b03/jdk-6u15-linux-x64.bin", + "name": "jdk-6u15-linux-x64.bin", + "title": "Java SE Development Kit 6u15 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u15-b03/jdk-6u15-solaris-i586.sh", + "name": "jdk-6u15-solaris-i586.sh", + "title": "Java SE Development Kit 6u15 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u15-b03/jdk-6u15-solaris-sparc.sh", + "name": "jdk-6u15-solaris-sparc.sh", + "title": "Java SE Development Kit 6u15 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u15-b03/jdk-6u15-solaris-sparcv9.sh", + "name": "jdk-6u15-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u15 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u15-b03/jdk-6u15-solaris-x64.sh", + "name": "jdk-6u15-solaris-x64.sh", + "title": "Java SE Development Kit 6u15 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u15-b03/jdk-6u15-windows-i586.exe", + "name": "jdk-6u15-windows-i586.exe", + "title": "Java SE Development Kit 6u15 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u15-b03/scott/jdk-6u15-windows-ia64.exe", + "name": "jdk-6u15-windows-ia64.exe", + "title": "Java SE Development Kit 6u15 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u15-b03/jdk-6u15-windows-x64.exe", + "name": "jdk-6u15-windows-x64.exe", + "title": "Java SE Development Kit 6u15 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u15-oth-JPR", + "title": "Java SE Development Kit 6u15" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u14-b08/jdk-6u14-linux-i586.bin", + "name": "jdk-6u14-linux-i586.bin", + "title": "Java SE Development Kit 6u14 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u14-b08/jdk-6u14-linux-ia64.bin", + "name": "jdk-6u14-linux-ia64.bin", + "title": "Java SE Development Kit 6u14 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u14-b08/jdk-6u14-linux-x64.bin", + "name": "jdk-6u14-linux-x64.bin", + "title": "Java SE Development Kit 6u14 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u14-b08/jdk-6u14-solaris-i586.sh", + "name": "jdk-6u14-solaris-i586.sh", + "title": "Java SE Development Kit 6u14 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u14-b08/jdk-6u14-solaris-sparc.sh", + "name": "jdk-6u14-solaris-sparc.sh", + "title": "Java SE Development Kit 6u14 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u14-b08/jdk-6u14-solaris-sparcv9.sh", + "name": "jdk-6u14-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u14 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u14-b08/jdk-6u14-solaris-x64.sh", + "name": "jdk-6u14-solaris-x64.sh", + "title": "Java SE Development Kit 6u14 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u14-b08/jdk-6u14-windows-i586.exe", + "name": "jdk-6u14-windows-i586.exe", + "title": "Java SE Development Kit 6u14 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u14-b08/jdk-6u14-windows-ia64.exe", + "name": "jdk-6u14-windows-ia64.exe", + "title": "Java SE Development Kit 6u14 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u14-b08/jdk-6u14-windows-x64.exe", + "name": "jdk-6u14-windows-x64.exe", + "title": "Java SE Development Kit 6u14 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u14-oth-JPR", + "title": "Java SE Development Kit 6u14" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u13-b03/jdk-6u13-linux-i586.bin", + "name": "jdk-6u13-linux-i586.bin", + "title": "Java SE Development Kit 6u13 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u13-b03/jdk-6u13-linux-ia64.bin", + "name": "jdk-6u13-linux-ia64.bin", + "title": "Java SE Development Kit 6u13 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u13-b03/jdk-6u13-linux-x64.bin", + "name": "jdk-6u13-linux-x64.bin", + "title": "Java SE Development Kit 6u13 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u13-b03/jdk-6u13-solaris-i586.sh", + "name": "jdk-6u13-solaris-i586.sh", + "title": "Java SE Development Kit 6u13 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u13-b03/jdk-6u13-solaris-sparc.sh", + "name": "jdk-6u13-solaris-sparc.sh", + "title": "Java SE Development Kit 6u13 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u13-b03/jdk-6u13-solaris-sparcv9.sh", + "name": "jdk-6u13-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u13 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u13-b03/jdk-6u13-solaris-x64.sh", + "name": "jdk-6u13-solaris-x64.sh", + "title": "Java SE Development Kit 6u13 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u13-b03/jdk-6u13-windows-i586-p.exe", + "name": "jdk-6u13-windows-i586-p.exe", + "title": "Java SE Development Kit 6u13 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u13-b03/jdk-6u13-windows-ia64.exe", + "name": "jdk-6u13-windows-ia64.exe", + "title": "Java SE Development Kit 6u13 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u13-b03/jdk-6u13-windows-x64-p.exe", + "name": "jdk-6u13-windows-x64-p.exe", + "title": "Java SE Development Kit 6u13 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u13-oth-JPR", + "title": "Java SE Development Kit 6u13" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u12-b04/jdk-6u12-linux-i586.bin", + "name": "jdk-6u12-linux-i586.bin", + "title": "Java SE Development Kit 6u12 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u12-b04/jdk-6u12-linux-ia64.bin", + "name": "jdk-6u12-linux-ia64.bin", + "title": "Java SE Development Kit 6u12 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u12-b04/jdk-6u12-linux-x64.bin", + "name": "jdk-6u12-linux-x64.bin", + "title": "Java SE Development Kit 6u12 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u12-b04/jdk-6u12-solaris-i586.sh", + "name": "jdk-6u12-solaris-i586.sh", + "title": "Java SE Development Kit 6u12 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u12-b04/jdk-6u12-solaris-sparc.sh", + "name": "jdk-6u12-solaris-sparc.sh", + "title": "Java SE Development Kit 6u12 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u12-b04/jdk-6u12-solaris-sparcv9.sh", + "name": "jdk-6u12-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u12 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u12-b04/jdk-6u12-solaris-x64.sh", + "name": "jdk-6u12-solaris-x64.sh", + "title": "Java SE Development Kit 6u12 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u12-b04/jdk-6u12-windows-i586-p.exe", + "name": "jdk-6u12-windows-i586-p.exe", + "title": "Java SE Development Kit 6u12 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u12-b04/jdk-6u12-windows-ia64.exe", + "name": "jdk-6u12-windows-ia64.exe", + "title": "Java SE Development Kit 6u12 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u12-b04/jdk-6u12-windows-x64-p.exe", + "name": "jdk-6u12-windows-x64-p.exe", + "title": "Java SE Development Kit 6u12 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u12-oth-JPR", + "title": "Java SE Development Kit 6u12" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u11-b03/jdk-6u11-linux-i586.bin", + "name": "jdk-6u11-linux-i586.bin", + "title": "Java SE Development Kit 6u11 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u11-b03/jdk-6u11-linux-ia64.bin", + "name": "jdk-6u11-linux-ia64.bin", + "title": "Java SE Development Kit 6u11 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u11-b03/jdk-6u11-linux-x64.bin", + "name": "jdk-6u11-linux-x64.bin", + "title": "Java SE Development Kit 6u11 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u11-b03/jdk-6u11-solaris-i586.sh", + "name": "jdk-6u11-solaris-i586.sh", + "title": "Java SE Development Kit 6u11 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u11-b03/jdk-6u11-solaris-sparc.sh", + "name": "jdk-6u11-solaris-sparc.sh", + "title": "Java SE Development Kit 6u11 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u11-b03/jdk-6u11-solaris-sparcv9.sh", + "name": "jdk-6u11-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u11 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u11-b03/jdk-6u11-solaris-x64.sh", + "name": "jdk-6u11-solaris-x64.sh", + "title": "Java SE Development Kit 6u11 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u11-b03/jdk-6u11-windows-i586-p.exe", + "name": "jdk-6u11-windows-i586-p.exe", + "title": "Java SE Development Kit 6u11 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u11-b03/jdk-6u11-windows-ia64.exe", + "name": "jdk-6u11-windows-ia64.exe", + "title": "Java SE Development Kit 6u11 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u11-b03/jdk-6u11-windows-x64.exe", + "name": "jdk-6u11-windows-x64.exe", + "title": "Java SE Development Kit 6u11 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u11-oth-JPR", + "title": "Java SE Development Kit 6u11" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u10/jdk-6u10-linux-i586.bin", + "name": "jdk-6u10-linux-i586.bin", + "title": "Java SE Development Kit 6u10 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u10/jdk-6u10-linux-x64.bin", + "name": "jdk-6u10-linux-x64.bin", + "title": "Java SE Development Kit 6u10 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u10/jdk-6u10-solaris-i586.sh", + "name": "jdk-6u10-solaris-i586.sh", + "title": "Java SE Development Kit 6u10 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u10/jdk-6u10-solaris-sparc.sh", + "name": "jdk-6u10-solaris-sparc.sh", + "title": "Java SE Development Kit 6u10 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u10/jdk-6u10-solaris-sparcv9.sh", + "name": "jdk-6u10-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u10 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u10/jdk-6u10-solaris-x64.sh", + "name": "jdk-6u10-solaris-x64.sh", + "title": "Java SE Development Kit 6u10 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u10/jdk-6u10-windows-i586-p.exe", + "name": "jdk-6u10-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u10/jdk-6u10-windows-x64.exe", + "name": "jdk-6u10-windows-x64.exe", + "title": "Java SE Development Kit 6u10 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u10-oth-JPR", + "title": "Java SE Development Kit 6u10" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u7/jdk-6u7-linux-i586.bin", + "name": "jdk-6u7-linux-i586.bin", + "title": "Java SE Development Kit 6u7 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u7/jdk-6u7-linux-x64.bin", + "name": "jdk-6u7-linux-x64.bin", + "title": "Java SE Development Kit 6u7 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u7/jdk-6u7-solaris-i586.sh", + "name": "jdk-6u7-solaris-i586.sh", + "title": "Java SE Development Kit 6u7 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u7/jdk-6u7-solaris-sparc.sh", + "name": "jdk-6u7-solaris-sparc.sh", + "title": "Java SE Development Kit 6u7 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u7/jdk-6u7-solaris-sparcv9.sh", + "name": "jdk-6u7-solaris-sparcv9.sh", + "title": "Java SE Development Kit 6u7 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u7/jdk-6u7-solaris-x64.sh", + "name": "jdk-6u7-solaris-x64.sh", + "title": "Java SE Development Kit 6u7 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u7/jdk-6u7-windows-i586-p.exe", + "name": "jdk-6u7-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u7/jdk-6u7-windows-x64.exe", + "name": "jdk-6u7-windows-x64.exe", + "title": "Java SE Development Kit 6u7 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u7-oth-JPR", + "title": "Java SE Development Kit 6u7" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u7-ia64/jdk-6u7-linux-ia64.bin", + "name": "jdk-6u7-linux-ia64.bin", + "title": "Java SE Development Kit for Itanium 6u7 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u7-ia64/jdk-6u7-windows-ia64.exe", + "name": "jdk-6u7-windows-ia64.exe", + "title": "Java SE Development Kit for Itanium 6u7 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u7-ia64-JPR", + "title": "Java SE Development Kit for Itanium 6u7" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u6-p2/jdk-6u6-p-linux-x64.tar.gz", + "name": "jdk-6u6-p-linux-x64.tar.gz", + "title": "Java SE Development Kit 6u6 Performance Release " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u6-p2/jdk-6u6-p-solaris-i586.tar", + "name": "jdk-6u6-p-solaris-i586.tar", + "title": "Java SE Development Kit 6u6 Performance Release " + }, + { + "filepath": "http://download.oracle.com/otn/java/jre/6u6p/jdk-6u6-p-solaris-sparc.tar", + "name": "jdk-6u6-p-solaris-sparc.tar", + "title": "Java SE Development Kit 6u6 Performance Release " + }, + { + "filepath": "http://download.oracle.com/otn/java/jre/6u6p/jdk-6u6-p-solaris-sparcv9.tar", + "name": "jdk-6u6-p-solaris-sparcv9.tar", + "title": "Java SE Development Kit 6u6 Performance Release " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u6-p2/jdk-6u6-p-solaris-x64.tar", + "name": "jdk-6u6-p-solaris-x64.tar", + "title": "Java SE Development Kit 6u6 Performance Release " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u6-p2/jdk-6u6-p-windows-i586.tar", + "name": "jdk-6u6-p-windows-i586.tar", + "title": "Java SE Development Kit 6u6 Performance Release " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u6-p2/jdk-6u6-p-windows-x64.tar", + "name": "jdk-6u6-p-windows-x64.tar", + "title": "Java SE Development Kit 6u6 Performance Release " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u6-p2-oth-JPR", + "title": "Java SE Development Kit 6u6 Performance" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u6/jdk-6u6-linux-i586.bin", + "name": "jdk-6u6-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u6/jdk-6u6-linux-x64.bin", + "name": "jdk-6u6-linux-x64.bin", + "title": "Linux x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u6/jdk-6u6-solaris-i586.sh", + "name": "jdk-6u6-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u6/jdk-6u6-solaris-sparc.sh", + "name": "jdk-6u6-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u6/jdk-6u6-solaris-sparcv9.sh", + "name": "jdk-6u6-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u6/jdk-6u6-solaris-x64.sh", + "name": "jdk-6u6-solaris-x64.sh", + "title": "Solaris x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u6/jdk-6u6-windows-i586-p.exe", + "name": "jdk-6u6-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u6/jdk-6u6-windows-x64.exe", + "name": "jdk-6u6-windows-x64.exe", + "title": "Windows x64 executable " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u6-oth-JPR", + "title": "Java SE Development Kit 6u6" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u5b/jdk-6u5-linux-i586.bin", + "name": "jdk-6u5-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u5b/jdk-6u5-linux-x64.bin", + "name": "jdk-6u5-linux-x64.bin", + "title": "Linux x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u5b/jdk-6u5-solaris-i586.sh", + "name": "jdk-6u5-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u5b/jdk-6u5-solaris-sparc.sh", + "name": "jdk-6u5-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u5b/jdk-6u5-solaris-sparcv9.sh", + "name": "jdk-6u5-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u5b/jdk-6u5-solaris-x64.sh", + "name": "jdk-6u5-solaris-x64.sh", + "title": "Solaris x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u5b/jdk-6u5-windows-i586-p.exe", + "name": "jdk-6u5-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u5b/jdk-6u5-windows-x64.exe", + "name": "jdk-6u5-windows-x64.exe", + "title": "Windows x64 executable " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u5-oth-JPR", + "title": "Java SE Development Kit 6u5" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u4-b12/jdk-6u4-linux-i586.bin", + "name": "jdk-6u4-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u4-b12/jdk-6u4-linux-x64.bin", + "name": "jdk-6u4-linux-x64.bin", + "title": "Linux x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u4-b12/jdk-6u4-solaris-i586.sh", + "name": "jdk-6u4-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u4-b12/jdk-6u4-solaris-sparc.sh", + "name": "jdk-6u4-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u4-b12/jdk-6u4-solaris-sparcv9.sh", + "name": "jdk-6u4-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u4-b12/jdk-6u4-solaris-x64.sh", + "name": "jdk-6u4-solaris-x64.sh", + "title": "Solaris x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u4-b12/jdk-6u4-windows-i586-p.exe", + "name": "jdk-6u4-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u4-b12/jdk-6u4-windows-x64.exe", + "name": "jdk-6u4-windows-x64.exe", + "title": "Windows x64 executable " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u4-b-oth-JPR", + "title": "Java SE Development Kit 6u4" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u3/jdk-6u3-linux-amd64.bin", + "name": "jdk-6u3-linux-amd64.bin", + "title": "Linux x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u3/jdk-6u3-linux-i586.bin", + "name": "jdk-6u3-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u3/jdk-6u3-solaris-amd64.sh", + "name": "jdk-6u3-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u3/jdk-6u3-solaris-i586.sh", + "name": "jdk-6u3-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u3/jdk-6u3-solaris-sparc.sh", + "name": "jdk-6u3-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u3/jdk-6u3-solaris-sparcv9.sh", + "name": "jdk-6u3-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u3/jdk-6u3-windows-amd64.exe", + "name": "jdk-6u3-windows-amd64.exe", + "title": "Windows x64 executable " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u3/jdk-6u3-windows-i586-p.exe", + "name": "jdk-6u3-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u3-oth-JPR", + "title": "Java SE Development Kit 6u3" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u2/jdk-6u2-linux-amd64.bin", + "name": "jdk-6u2-linux-amd64.bin", + "title": "Linux x64 self-extracting file (build 05) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u2/jdk-6u2-linux-i586.bin", + "name": "jdk-6u2-linux-i586.bin", + "title": "Linux self-extracting file (build 05) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u2/jdk-6u2-solaris-amd64.sh", + "name": "jdk-6u2-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file (build 05) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u2/jdk-6u2-solaris-i586.sh", + "name": "jdk-6u2-solaris-i586.sh", + "title": "Solaris x86 self-extracting file (build 05) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u2/jdk-6u2-solaris-sparc.sh", + "name": "jdk-6u2-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file (build 05) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u2/jdk-6u2-solaris-sparcv9.sh", + "name": "jdk-6u2-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file (build 05) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u2/jdk-6u2-windows-amd64.exe", + "name": "jdk-6u2-windows-amd64.exe", + "title": "Windows x64 executable (build 05) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u2/jdk-6u2-windows-i586-p.exe", + "name": "jdk-6u2-windows-i586-p.exe", + "title": "Windows Offline Installation (build 06) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u2-oth-JPR", + "title": "Java SE Development Kit 6u2" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u1/jdk-6u1-linux-amd64.bin", + "name": "jdk-6u1-linux-amd64.bin", + "title": "Linux x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u1/jdk-6u1-linux-i586.bin", + "name": "jdk-6u1-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u1/jdk-6u1-solaris-amd64.sh", + "name": "jdk-6u1-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u1/jdk-6u1-solaris-i586.sh", + "name": "jdk-6u1-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u1/jdk-6u1-solaris-sparc.sh", + "name": "jdk-6u1-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u1/jdk-6u1-solaris-sparcv9.sh", + "name": "jdk-6u1-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u1/jdk-6u1-windows-amd64.exe", + "name": "jdk-6u1-windows-amd64.exe", + "title": "Windows x64 executable " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6u1/jdk-6u1-windows-i586-p.exe", + "name": "jdk-6u1-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6u1-oth-JPR", + "title": "Java SE Development Kit 6u1" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/6/jdk-6-linux-amd64.bin", + "name": "jdk-6-linux-amd64.bin", + "title": "Linux x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6/jdk-6-linux-i586.bin", + "name": "jdk-6-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6/jdk-6-solaris-amd64.sh", + "name": "jdk-6-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6/jdk-6-solaris-i586.sh", + "name": "jdk-6-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6/jdk-6-solaris-sparc.sh", + "name": "jdk-6-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6/jdk-6-solaris-sparcv9.sh", + "name": "jdk-6-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6/jdk-6-windows-amd64.exe", + "name": "jdk-6-windows-amd64.exe", + "title": "Windows x64 executable " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/6/jdk-6-windows-i586.exe", + "name": "jdk-6-windows-i586.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-6-oth-JPR", + "title": "Java SE Development Kit 6" + } + ] + }, + { + "name": "JDK 5", + "releases": [ + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-linux-amd64.bin", + "name": "jdk-1_5_0_22-linux-amd64.bin", + "title": "Java Development Kit 5.0 Update 22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-linux-i586.bin", + "name": "jdk-1_5_0_22-linux-i586.bin", + "title": "Java Development Kit 5.0 Update 22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-solaris-amd64.sh", + "name": "jdk-1_5_0_22-solaris-amd64.sh", + "title": "Java Development Kit 5.0 Update 22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-solaris-i586.sh", + "name": "jdk-1_5_0_22-solaris-i586.sh", + "title": "Java Development Kit 5.0 Update 22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-solaris-sparc.sh", + "name": "jdk-1_5_0_22-solaris-sparc.sh", + "title": "Java Development Kit 5.0 Update 22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-solaris-sparcv9.sh", + "name": "jdk-1_5_0_22-solaris-sparcv9.sh", + "title": "Java Development Kit 5.0 Update 22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-windows-amd64.exe", + "name": "jdk-1_5_0_22-windows-amd64.exe", + "title": "Java Development Kit 5.0 Update 22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-windows-i586-p.exe", + "name": "jdk-1_5_0_22-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_22-oth-JPR", + "title": "Java SE Development Kit 5.0u22" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_21/jdk-1_5_0_21-linux-amd64.bin", + "name": "jdk-1_5_0_21-linux-amd64.bin", + "title": "Java Development Kit 5.0 Update 21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_21/jdk-1_5_0_21-linux-i586.bin", + "name": "jdk-1_5_0_21-linux-i586.bin", + "title": "Java Development Kit 5.0 Update 21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_21/jdk-1_5_0_21-solaris-amd64.sh", + "name": "jdk-1_5_0_21-solaris-amd64.sh", + "title": "Java Development Kit 5.0 Update 21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_21/jdk-1_5_0_21-solaris-i586.sh", + "name": "jdk-1_5_0_21-solaris-i586.sh", + "title": "Java Development Kit 5.0 Update 21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_21/jdk-1_5_0_21-solaris-sparc.sh", + "name": "jdk-1_5_0_21-solaris-sparc.sh", + "title": "Java Development Kit 5.0 Update 21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_21/jdk-1_5_0_21-solaris-sparcv9.sh", + "name": "jdk-1_5_0_21-solaris-sparcv9.sh", + "title": "Java Development Kit 5.0 Update 21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_21/jdk-1_5_0_21-windows-amd64.exe", + "name": "jdk-1_5_0_21-windows-amd64.exe", + "title": "Java Development Kit 5.0 Update 21 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_21/jdk-1_5_0_21-windows-i586-p.exe", + "name": "jdk-1_5_0_21-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_21-oth-JPR", + "title": "Java SE Development Kit 5.0u21" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_20/jdk-1_5_0_20-linux-amd64.bin", + "name": "jdk-1_5_0_20-linux-amd64.bin", + "title": "Java Development Kit 5.0 Update 20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_20/jdk-1_5_0_20-linux-i586.bin", + "name": "jdk-1_5_0_20-linux-i586.bin", + "title": "Java Development Kit 5.0 Update 20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_20/jdk-1_5_0_20-solaris-amd64.sh", + "name": "jdk-1_5_0_20-solaris-amd64.sh", + "title": "Java Development Kit 5.0 Update 20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_20/jdk-1_5_0_20-solaris-i586.sh", + "name": "jdk-1_5_0_20-solaris-i586.sh", + "title": "Java Development Kit 5.0 Update 20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_20/jdk-1_5_0_20-solaris-sparc.sh", + "name": "jdk-1_5_0_20-solaris-sparc.sh", + "title": "Java Development Kit 5.0 Update 20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_20/jdk-1_5_0_20-solaris-sparcv9.sh", + "name": "jdk-1_5_0_20-solaris-sparcv9.sh", + "title": "Java Development Kit 5.0 Update 20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_20/jdk-1_5_0_20-windows-amd64.exe", + "name": "jdk-1_5_0_20-windows-amd64.exe", + "title": "Java Development Kit 5.0 Update 20 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_20/jdk-1_5_0_20-windows-i586-p.exe", + "name": "jdk-1_5_0_20-windows-i586-p.exe", + "title": "Java Development Kit 5.0 Update 20 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_20-oth-JPR", + "title": "Java SE Development Kit 5.0u20" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_19/jdk-1_5_0_19-linux-amd64.bin", + "name": "jdk-1_5_0_19-linux-amd64.bin", + "title": "Java Development Kit 5.0 Update 19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_19/jdk-1_5_0_19-linux-i586.bin", + "name": "jdk-1_5_0_19-linux-i586.bin", + "title": "Java Development Kit 5.0 Update 19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_19/jdk-1_5_0_19-solaris-amd64.sh", + "name": "jdk-1_5_0_19-solaris-amd64.sh", + "title": "Java Development Kit 5.0 Update 19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_19/jdk-1_5_0_19-solaris-i586.sh", + "name": "jdk-1_5_0_19-solaris-i586.sh", + "title": "Java Development Kit 5.0 Update 19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_19/jdk-1_5_0_19-solaris-sparc.sh", + "name": "jdk-1_5_0_19-solaris-sparc.sh", + "title": "Java Development Kit 5.0 Update 19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_19/jdk-1_5_0_19-solaris-sparcv9.sh", + "name": "jdk-1_5_0_19-solaris-sparcv9.sh", + "title": "Java Development Kit 5.0 Update 19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_19/jdk-1_5_0_19-windows-amd64.exe", + "name": "jdk-1_5_0_19-windows-amd64.exe", + "title": "Java Development Kit 5.0 Update 19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_19/jdk-1_5_0_19-windows-i586-p.exe", + "name": "jdk-1_5_0_19-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_19-oth-JPR", + "title": "Java SE Development Kit 5.0u19" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_18/jdk-1_5_0_18-linux-amd64.bin", + "name": "jdk-1_5_0_18-linux-amd64.bin", + "title": "Java Development Kit 5.0 Update 18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_18/jdk-1_5_0_18-linux-i586.bin", + "name": "jdk-1_5_0_18-linux-i586.bin", + "title": "Java Development Kit 5.0 Update 18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_18/jdk-1_5_0_18-solaris-amd64.sh", + "name": "jdk-1_5_0_18-solaris-amd64.sh", + "title": "Java Development Kit 5.0 Update 18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_18/jdk-1_5_0_18-solaris-i586.sh", + "name": "jdk-1_5_0_18-solaris-i586.sh", + "title": "Java Development Kit 5.0 Update 18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_18/jdk-1_5_0_18-solaris-sparc.sh", + "name": "jdk-1_5_0_18-solaris-sparc.sh", + "title": "Java Development Kit 5.0 Update 18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_18/jdk-1_5_0_18-solaris-sparcv9.sh", + "name": "jdk-1_5_0_18-solaris-sparcv9.sh", + "title": "Java Development Kit 5.0 Update 18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_18/jdk-1_5_0_18-windows-amd64.exe", + "name": "jdk-1_5_0_18-windows-amd64.exe", + "title": "Java Development Kit 5.0 Update 18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_18/jdk-1_5_0_18-windows-i586-p.exe", + "name": "jdk-1_5_0_18-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_18-oth-JPR", + "title": "Java SE Development Kit 5.0u18" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_17/jdk-1_5_0_17-linux-amd64.bin", + "name": "jdk-1_5_0_17-linux-amd64.bin", + "title": "Java Development Kit 5.0 Update 17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_17/jdk-1_5_0_17-linux-i586.bin", + "name": "jdk-1_5_0_17-linux-i586.bin", + "title": "Java Development Kit 5.0 Update 17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_17/jdk-1_5_0_17-solaris-amd64.sh", + "name": "jdk-1_5_0_17-solaris-amd64.sh", + "title": "Java Development Kit 5.0 Update 17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_17/jdk-1_5_0_17-solaris-i586.sh", + "name": "jdk-1_5_0_17-solaris-i586.sh", + "title": "Java Development Kit 5.0 Update 17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_17/jdk-1_5_0_17-solaris-sparc.sh", + "name": "jdk-1_5_0_17-solaris-sparc.sh", + "title": "Java Development Kit 5.0 Update 17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_17/jdk-1_5_0_17-solaris-sparcv9.sh", + "name": "jdk-1_5_0_17-solaris-sparcv9.sh", + "title": "Java Development Kit 5.0 Update 17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_17/jdk-1_5_0_17-windows-amd64.exe", + "name": "jdk-1_5_0_17-windows-amd64.exe", + "title": "Java Development Kit 5.0 Update 17 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_17/jdk-1_5_0_17-windows-i586-p.exe", + "name": "jdk-1_5_0_17-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_17-oth-JPR", + "title": "Java SE Development Kit 5.0u17" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_16/jdk-1_5_0_16-linux-amd64.bin", + "name": "jdk-1_5_0_16-linux-amd64.bin", + "title": "Java Development Kit 5.0 Update 16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_16/jdk-1_5_0_16-linux-i586.bin", + "name": "jdk-1_5_0_16-linux-i586.bin", + "title": "Java Development Kit 5.0 Update 16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_16/jdk-1_5_0_16-solaris-amd64.sh", + "name": "jdk-1_5_0_16-solaris-amd64.sh", + "title": "Java Development Kit 5.0 Update 16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_16/jdk-1_5_0_16-solaris-i586.sh", + "name": "jdk-1_5_0_16-solaris-i586.sh", + "title": "Java Development Kit 5.0 Update 16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_16/jdk-1_5_0_16-solaris-sparc.sh", + "name": "jdk-1_5_0_16-solaris-sparc.sh", + "title": "Java Development Kit 5.0 Update 16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_16/jdk-1_5_0_16-solaris-sparcv9.sh", + "name": "jdk-1_5_0_16-solaris-sparcv9.sh", + "title": "Java Development Kit 5.0 Update 16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_16/jdk-1_5_0_16-windows-amd64.exe", + "name": "jdk-1_5_0_16-windows-amd64.exe", + "title": "Java Development Kit 5.0 Update 16 " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_16/jdk-1_5_0_16-windows-i586-p.exe", + "name": "jdk-1_5_0_16-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_16-oth-JPR", + "title": "Java SE Development Kit 5.0u16" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/5.0_15/jdk-1_5_0_15-linux-amd64.bin", + "name": "jdk-1_5_0_15-linux-amd64.bin", + "title": "Linux x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/5.0_15/jdk-1_5_0_15-linux-i586.bin", + "name": "jdk-1_5_0_15-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/5.0_15/jdk-1_5_0_15-solaris-amd64.sh", + "name": "jdk-1_5_0_15-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/5.0_15/jdk-1_5_0_15-solaris-i586.sh", + "name": "jdk-1_5_0_15-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/5.0_15/jdk-1_5_0_15-solaris-sparc.sh", + "name": "jdk-1_5_0_15-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/5.0_15/jdk-1_5_0_15-solaris-sparcv9.sh", + "name": "jdk-1_5_0_15-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/5.0_15/jdk-1_5_0_15-windows-amd64.exe", + "name": "jdk-1_5_0_15-windows-amd64.exe", + "title": "Windows x64 executable (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/5.0_15/jdk-1_5_0_15-windows-i586-p.exe", + "name": "jdk-1_5_0_15-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_15-oth-JPR", + "title": "Java SE Development Kit 5.0 Update 15" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_14/jdk-1_5_0_14-linux-amd64.bin", + "name": "jdk-1_5_0_14-linux-amd64.bin", + "title": "Linux x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_14/jdk-1_5_0_14-linux-i586.bin", + "name": "jdk-1_5_0_14-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_14/jdk-1_5_0_14-solaris-amd64.sh", + "name": "jdk-1_5_0_14-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_14/jdk-1_5_0_14-solaris-i586.sh", + "name": "jdk-1_5_0_14-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_14/jdk-1_5_0_14-solaris-sparc.sh", + "name": "jdk-1_5_0_14-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_14/jdk-1_5_0_14-solaris-sparcv9.sh", + "name": "jdk-1_5_0_14-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_14/jdk-1_5_0_14-windows-amd64.exe", + "name": "jdk-1_5_0_14-windows-amd64.exe", + "title": "Windows x64 executable (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_14/jdk-1_5_0_14-windows-i586-p.exe", + "name": "jdk-1_5_0_14-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_14-oth-JPR", + "title": "Java Development Kit 5.0 Update 14" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_13/jdk-1_5_0_13-linux-amd64.bin", + "name": "jdk-1_5_0_13-linux-amd64.bin", + "title": "Linux x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_13/jdk-1_5_0_13-linux-i586.bin", + "name": "jdk-1_5_0_13-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_13/jdk-1_5_0_13-solaris-amd64.sh", + "name": "jdk-1_5_0_13-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_13/jdk-1_5_0_13-solaris-i586.sh", + "name": "jdk-1_5_0_13-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_13/jdk-1_5_0_13-solaris-sparc.sh", + "name": "jdk-1_5_0_13-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_13/jdk-1_5_0_13-solaris-sparcv9.sh", + "name": "jdk-1_5_0_13-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_13/jdk-1_5_0_13-windows-amd64.exe", + "name": "jdk-1_5_0_13-windows-amd64.exe", + "title": "Windows x64 executable (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_13/jdk-1_5_0_13-windows-i586-p.exe", + "name": "jdk-1_5_0_13-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_13-oth-JPR", + "title": "Java Development Kit 5.0 Update 13" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_12/jdk-1_5_0_12-linux-amd64.bin", + "name": "jdk-1_5_0_12-linux-amd64.bin", + "title": "Linux x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_12/jdk-1_5_0_12-linux-i586.bin", + "name": "jdk-1_5_0_12-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_12/jdk-1_5_0_12-solaris-amd64.sh", + "name": "jdk-1_5_0_12-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_12/jdk-1_5_0_12-solaris-i586.sh", + "name": "jdk-1_5_0_12-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_12/jdk-1_5_0_12-solaris-sparc.sh", + "name": "jdk-1_5_0_12-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_12/jdk-1_5_0_12-solaris-sparcv9.sh", + "name": "jdk-1_5_0_12-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_12/jdk-1_5_0_12-windows-amd64.exe", + "name": "jdk-1_5_0_12-windows-amd64.exe", + "title": "Windows x64 executable (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_12/jdk-1_5_0_12-windows-i586-p.exe", + "name": "jdk-1_5_0_12-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_12-oth-JPR", + "title": "Java Development Kit 5.0 Update 12" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_11/jdk-1_5_0_11-linux-amd64.bin", + "name": "jdk-1_5_0_11-linux-amd64.bin", + "title": "Linux x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_11/jdk-1_5_0_11-linux-i586.bin", + "name": "jdk-1_5_0_11-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_11/jdk-1_5_0_11-solaris-amd64.sh", + "name": "jdk-1_5_0_11-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_11/jdk-1_5_0_11-solaris-i586.sh", + "name": "jdk-1_5_0_11-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_11/jdk-1_5_0_11-solaris-sparc.sh", + "name": "jdk-1_5_0_11-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_11/jdk-1_5_0_11-solaris-sparcv9.sh", + "name": "jdk-1_5_0_11-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_11/jdk-1_5_0_11-windows-amd64.exe", + "name": "jdk-1_5_0_11-windows-amd64.exe", + "title": "Windows x64 executable (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_11/jdk-1_5_0_11-windows-i586-p.exe", + "name": "jdk-1_5_0_11-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_11-oth-JPR", + "title": "J2SE(TM) Development Kit 5.0 Update 11" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_10/jdk-1_5_0_10-linux-amd64.bin", + "name": "jdk-1_5_0_10-linux-amd64.bin", + "title": "Linux x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_10/jdk-1_5_0_10-linux-i586.bin", + "name": "jdk-1_5_0_10-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_10/jdk-1_5_0_10-solaris-amd64.sh", + "name": "jdk-1_5_0_10-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_10/jdk-1_5_0_10-solaris-i586.sh", + "name": "jdk-1_5_0_10-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_10/jdk-1_5_0_10-solaris-sparc.sh", + "name": "jdk-1_5_0_10-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_10/jdk-1_5_0_10-solaris-sparcv9.sh", + "name": "jdk-1_5_0_10-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_10/jdk-1_5_0_10-windows-amd64.exe", + "name": "jdk-1_5_0_10-windows-amd64.exe", + "title": "Windows x64 executable (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_10/jdk-1_5_0_10-windows-i586-p.exe", + "name": "jdk-1_5_0_10-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_10-oth-JPR", + "title": "J2SE(TM) Development Kit 5.0 Update 10" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_09_b03/jdk-1_5_0_09-linux-amd64.bin", + "name": "jdk-1_5_0_09-linux-amd64.bin", + "title": "Linux x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_09_b03/jdk-1_5_0_09-linux-i586.bin", + "name": "jdk-1_5_0_09-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_09_b03/jdk-1_5_0_09-solaris-amd64.sh", + "name": "jdk-1_5_0_09-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_09_b03/jdk-1_5_0_09-solaris-i586.sh", + "name": "jdk-1_5_0_09-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_09_b03/jdk-1_5_0_09-solaris-sparc.sh", + "name": "jdk-1_5_0_09-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_09_b03/jdk-1_5_0_09-solaris-sparcv9.sh", + "name": "jdk-1_5_0_09-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_09_b03/jdk-1_5_0_09-windows-amd64.exe", + "name": "jdk-1_5_0_09-windows-amd64.exe", + "title": "Windows x64 executable (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_09_b03/jdk-1_5_0_09-windows-i586-p.exe", + "name": "jdk-1_5_0_09-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_09-oth-JPR", + "title": "J2SE(TM) Development Kit 5.0 Update 9" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_08/jdk-1_5_0_08-linux-amd64.bin", + "name": "jdk-1_5_0_08-linux-amd64.bin", + "title": "Linux x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_08/jdk-1_5_0_08-linux-i586.bin", + "name": "jdk-1_5_0_08-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_08/jdk-1_5_0_08-solaris-amd64.sh", + "name": "jdk-1_5_0_08-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_08/jdk-1_5_0_08-solaris-i586.sh", + "name": "jdk-1_5_0_08-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_08/jdk-1_5_0_08-solaris-sparc.sh", + "name": "jdk-1_5_0_08-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_08/jdk-1_5_0_08-solaris-sparcv9.sh", + "name": "jdk-1_5_0_08-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_08/jdk-1_5_0_08-windows-amd64.exe", + "name": "jdk-1_5_0_08-windows-amd64.exe", + "title": "Windows x64 executable (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_08/jdk-1_5_0_08-windows-i586-p.exe", + "name": "jdk-1_5_0_08-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_08-oth-JPR", + "title": "J2SE(TM) Development Kit 5.0 Update 8" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_07/jdk-1_5_0_07-linux-amd64.bin", + "name": "jdk-1_5_0_07-linux-amd64.bin", + "title": "Linux AMD64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_07/jdk-1_5_0_07-linux-i586.bin", + "name": "jdk-1_5_0_07-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_07/jdk-1_5_0_07-solaris-amd64.sh", + "name": "jdk-1_5_0_07-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_07/jdk-1_5_0_07-solaris-i586.sh", + "name": "jdk-1_5_0_07-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_07/jdk-1_5_0_07-solaris-sparc.sh", + "name": "jdk-1_5_0_07-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_07/jdk-1_5_0_07-solaris-sparcv9.sh", + "name": "jdk-1_5_0_07-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_07/jdk-1_5_0_07-windows-amd64.exe", + "name": "jdk-1_5_0_07-windows-amd64.exe", + "title": "Windows AMD64 executable (use 32-bit version for applet and Java Web Start support) " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_07/jdk-1_5_0_07-windows-i586-p.exe", + "name": "jdk-1_5_0_07-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_07-oth-JPR", + "title": "J2SE(TM) Development Kit 5.0 Update 7" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06/jdk-1_5_0_06-linux-amd64.bin", + "name": "jdk-1_5_0_06-linux-amd64.bin", + "title": "Linux AMD64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06/jdk-1_5_0_06-linux-i586.bin", + "name": "jdk-1_5_0_06-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06/jdk-1_5_0_06-solaris-amd64.sh", + "name": "jdk-1_5_0_06-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06/jdk-1_5_0_06-solaris-i586.sh", + "name": "jdk-1_5_0_06-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06/jdk-1_5_0_06-solaris-sparc.sh", + "name": "jdk-1_5_0_06-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06/jdk-1_5_0_06-solaris-sparcv9.sh", + "name": "jdk-1_5_0_06-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06/jdk-1_5_0_06-windows-amd64.exe", + "name": "jdk-1_5_0_06-windows-amd64.exe", + "title": "Windows AMD64 executable " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06/jdk-1_5_0_06-windows-i586-p.exe", + "name": "jdk-1_5_0_06-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_06-oth-JPR", + "title": "J2SE(TM) Development Kit 5.0 Update 6" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06b02-cap/jdk-1_5_0_06-ea-bin-b02-linux-amd64-23_aug_2005.bin", + "name": "jdk-1_5_0_06-ea-bin-b02-linux-amd64-23_aug_2005.bin", + "title": "Linux AMD64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06b02-cap/jdk-1_5_0_06-ea-bin-b02-linux-i586-23_aug_2005.bin", + "name": "jdk-1_5_0_06-ea-bin-b02-linux-i586-23_aug_2005.bin", + "title": "Linux Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06b02-cap/jdk-1_5_0_06-ea-bin-b02-solaris-amd64-23_aug_2005.sh", + "name": "jdk-1_5_0_06-ea-bin-b02-solaris-amd64-23_aug_2005.sh", + "title": "Solaris x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06b02-cap/jdk-1_5_0_06-ea-bin-b02-solaris-i586-23_aug_2005.sh", + "name": "jdk-1_5_0_06-ea-bin-b02-solaris-i586-23_aug_2005.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06b02-cap/jdk-1_5_0_06-ea-bin-b02-solaris-sparc-23_aug_2005.sh", + "name": "jdk-1_5_0_06-ea-bin-b02-solaris-sparc-23_aug_2005.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06b02-cap/jdk-1_5_0_06-ea-bin-b02-solaris-sparcv9-23_aug_2005.sh", + "name": "jdk-1_5_0_06-ea-bin-b02-solaris-sparcv9-23_aug_2005.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06b02-cap/jdk-1_5_0_06-ea-bin-b02-windows-amd64-23_aug_2005.exe", + "name": "jdk-1_5_0_06-ea-bin-b02-windows-amd64-23_aug_2005.exe", + "title": "Windows AMD64 executable " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_06b02-cap/jdk-1_5_0_06-ea-bin-b02-windows-i586-p-23_aug_2005.exe", + "name": "jdk-1_5_0_06-ea-bin-b02-windows-i586-p-23_aug_2005.exe", + "title": "Windows Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_06-b02-cap-oth-JPR", + "title": "Java(TM) SDK, Standard Edition, Compatibility and Performance (CAP) 5.0_06 Build 2" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_05/jdk-1_5_0_05-linux-amd64.bin", + "name": "jdk-1_5_0_05-linux-amd64.bin", + "title": "Linux AMD64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_05/jdk-1_5_0_05-linux-i586.bin", + "name": "jdk-1_5_0_05-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_05/jdk-1_5_0_05-solaris-amd64.sh", + "name": "jdk-1_5_0_05-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_05/jdk-1_5_0_05-solaris-i586.sh", + "name": "jdk-1_5_0_05-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_05/jdk-1_5_0_05-solaris-sparc.sh", + "name": "jdk-1_5_0_05-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_05/jdk-1_5_0_05-solaris-sparcv9.sh", + "name": "jdk-1_5_0_05-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_05/jdk-1_5_0_05-windows-amd64.exe", + "name": "jdk-1_5_0_05-windows-amd64.exe", + "title": "Windows AMD64 executable " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_05/jdk-1_5_0_05-windows-i586-p.exe", + "name": "jdk-1_5_0_05-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_05-oth-JPR", + "title": "J2SE(TM) Development Kit 5.0 Update 5" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_04/jdk-1_5_0_04-linux-amd64.bin", + "name": "jdk-1_5_0_04-linux-amd64.bin", + "title": "Linux AMD64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_04/jdk-1_5_0_04-linux-i586.bin", + "name": "jdk-1_5_0_04-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_04/jdk-1_5_0_04-solaris-amd64.sh", + "name": "jdk-1_5_0_04-solaris-amd64.sh", + "title": "Solaris x64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_04/jdk-1_5_0_04-solaris-i586.sh", + "name": "jdk-1_5_0_04-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_04/jdk-1_5_0_04-solaris-sparc.sh", + "name": "jdk-1_5_0_04-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_04/jdk-1_5_0_04-solaris-sparcv9.sh", + "name": "jdk-1_5_0_04-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_04/jdk-1_5_0_04-windows-amd64.exe", + "name": "jdk-1_5_0_04-windows-amd64.exe", + "title": "Windows AMD64 executable " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_04/jdk-1_5_0_04-windows-i586-p.exe", + "name": "jdk-1_5_0_04-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_04-oth-JPR", + "title": "J2SE(TM) Development Kit 5.0 Update 4" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_03/jdk-1_5_0_03-linux-amd64.bin", + "name": "jdk-1_5_0_03-linux-amd64.bin", + "title": "Linux AMD64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_03/jdk-1_5_0_03-linux-i586.bin", + "name": "jdk-1_5_0_03-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_03/jdk-1_5_0_03-solaris-amd64.sh", + "name": "jdk-1_5_0_03-solaris-amd64.sh", + "title": "Solaris AMD64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_03/jdk-1_5_0_03-solaris-i586.sh", + "name": "jdk-1_5_0_03-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_03/jdk-1_5_0_03-solaris-sparc.sh", + "name": "jdk-1_5_0_03-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_03/jdk-1_5_0_03-solaris-sparcv9.sh", + "name": "jdk-1_5_0_03-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_03/jdk-1_5_0_03-windows-i586-p.exe", + "name": "jdk-1_5_0_03-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_03-oth-JPR", + "title": "J2SE(TM) Development Kit 5.0 Update 3" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_02/jdk-1_5_0_02-linux-amd64.bin", + "name": "jdk-1_5_0_02-linux-amd64.bin", + "title": "Linux AMD64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_02/jdk-1_5_0_02-linux-i586.bin", + "name": "jdk-1_5_0_02-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_02/jdk-1_5_0_02-solaris-amd64.sh", + "name": "jdk-1_5_0_02-solaris-amd64.sh", + "title": "Solaris AMD64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_02/jdk-1_5_0_02-solaris-i586.sh", + "name": "jdk-1_5_0_02-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_02/jdk-1_5_0_02-solaris-sparc.sh", + "name": "jdk-1_5_0_02-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_02/jdk-1_5_0_02-solaris-sparcv9.sh", + "name": "jdk-1_5_0_02-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_02/jdk-1_5_0_02-windows-i586-p.exe", + "name": "jdk-1_5_0_02-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_02-oth-JPR", + "title": "J2SE(TM) Development Kit 5.0 Update 2" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_01/jdk-1_5_0_01-linux-amd64.bin", + "name": "jdk-1_5_0_01-linux-amd64.bin", + "title": "Linux AMD64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_01/jdk-1_5_0_01-linux-i586.bin", + "name": "jdk-1_5_0_01-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_01/jdk-1_5_0_01-solaris-i586.sh", + "name": "jdk-1_5_0_01-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_01/jdk-1_5_0_01-solaris-sparc.sh", + "name": "jdk-1_5_0_01-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_01/jdk-1_5_0_01-solaris-sparcv9.sh", + "name": "jdk-1_5_0_01-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0_01/jdk-1_5_0_01-windows-i586-p.exe", + "name": "jdk-1_5_0_01-windows-i586-p.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0_01-oth-JPR", + "title": "J2SE(TM) Development Kit 5.0 Update 1" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0/jdk-1_5_0-linux-amd64.bin", + "name": "jdk-1_5_0-linux-amd64.bin", + "title": "Linux AMD64 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0/jdk-1_5_0-linux-i586.bin", + "name": "jdk-1_5_0-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0/jdk-1_5_0-solaris-i586.sh", + "name": "jdk-1_5_0-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0/jdk-1_5_0-solaris-sparc.sh", + "name": "jdk-1_5_0-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0/jdk-1_5_0-solaris-sparcv9.sh", + "name": "jdk-1_5_0-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/jdk/1.5.0/jdk-1_5_0-windows-i586.exe", + "name": "jdk-1_5_0-windows-i586.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "jdk-1.5.0-oth-JPR", + "title": "J2SE(TM) Development Kit 5.0" + } + ] + }, + { + "name": "JDK 1.4", + "releases": [ + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_30-b04/j2sdk-1_4_2_30-solaris-amd64.sh", + "name": "j2sdk-1_4_2_30-solaris-amd64.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_30 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_30-b04/j2sdk-1_4_2_30-solaris-i586.sh", + "name": "j2sdk-1_4_2_30-solaris-i586.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_30 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_30-b04/j2sdk-1_4_2_30-solaris-sparc.sh", + "name": "j2sdk-1_4_2_30-solaris-sparc.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_30 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_30-b04/j2sdk-1_4_2_30-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_30-solaris-sparcv9.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_30 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_30-sol-JPR", + "title": "Java SE Development Kit 1.4.2_30" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_29-b01/j2sdk-1_4_2_29-solaris-amd64.sh", + "name": "j2sdk-1_4_2_29-solaris-amd64.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_29 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_29-b01/j2sdk-1_4_2_29-solaris-i586.sh", + "name": "j2sdk-1_4_2_29-solaris-i586.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_29 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_29-b01/j2sdk-1_4_2_29-solaris-sparc.sh", + "name": "j2sdk-1_4_2_29-solaris-sparc.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_29 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_29-b01/j2sdk-1_4_2_29-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_29-solaris-sparcv9.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_29 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_29-sol-JPR", + "title": "Java SE Development Kit 1.4.2_29" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_28-b03/j2sdk-1_4_2_28-solaris-amd64.sh", + "name": "j2sdk-1_4_2_28-solaris-amd64.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_28 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_28-b03/j2sdk-1_4_2_28-solaris-i586.sh", + "name": "j2sdk-1_4_2_28-solaris-i586.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_28 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_28-b03/j2sdk-1_4_2_28-solaris-sparc.sh", + "name": "j2sdk-1_4_2_28-solaris-sparc.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_28 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_28-b03/j2sdk-1_4_2_28-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_28-solaris-sparcv9.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_28 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_28-sol-JPR", + "title": "Java SE Development Kit 1.4.2_28" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_27-b03/j2sdk-1_4_2_27-solaris-amd64.sh", + "name": "j2sdk-1_4_2_27-solaris-amd64.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_27 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_27-b03/j2sdk-1_4_2_27-solaris-i586.sh", + "name": "j2sdk-1_4_2_27-solaris-i586.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_27 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_27-b03/j2sdk-1_4_2_27-solaris-sparc.sh", + "name": "j2sdk-1_4_2_27-solaris-sparc.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_27 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_27-b03/j2sdk-1_4_2_27-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_27-solaris-sparcv9.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_27 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_27-sol-JPR", + "title": "Java SE Development Kit 1.4.2_27" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_26-b03/j2sdk-1_4_2_26-solaris-amd64.sh", + "name": "j2sdk-1_4_2_26-solaris-amd64.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_26 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_26-b03/j2sdk-1_4_2_26-solaris-i586.sh", + "name": "j2sdk-1_4_2_26-solaris-i586.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_26 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_26-b03/j2sdk-1_4_2_26-solaris-sparc.sh", + "name": "j2sdk-1_4_2_26-solaris-sparc.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_26 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_26-b03/j2sdk-1_4_2_26-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_26-solaris-sparcv9.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_26 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_26-sol-JPR", + "title": "Java SE Development Kit 1.4.2_26" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_25/j2sdk-1_4_2_25-solaris-amd64.sh", + "name": "j2sdk-1_4_2_25-solaris-amd64.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_25 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_25/j2sdk-1_4_2_25-solaris-i586.sh", + "name": "j2sdk-1_4_2_25-solaris-i586.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_25 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_25/j2sdk-1_4_2_25-solaris-sparc.sh", + "name": "j2sdk-1_4_2_25-solaris-sparc.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_25 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_25/j2sdk-1_4_2_25-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_25-solaris-sparcv9.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_25 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_25-sol-JPR", + "title": "Java SE Development Kit 1.4.2_25" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_24/j2sdk-1_4_2_24-solaris-amd64.sh", + "name": "j2sdk-1_4_2_24-solaris-amd64.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_24 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_24/j2sdk-1_4_2_24-solaris-i586.sh", + "name": "j2sdk-1_4_2_24-solaris-i586.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_24 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_24/j2sdk-1_4_2_24-solaris-sparc.sh", + "name": "j2sdk-1_4_2_24-solaris-sparc.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_24 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_24/j2sdk-1_4_2_24-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_24-solaris-sparcv9.sh", + "title": "Java 2 Software Development Kit (J2SDK) Standard Edition for Solaris 1.4.2_24 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_24-sol-JPR", + "title": "Java SE Development Kit 1.4.2_24 for Solaris" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_23/j2sdk-1_4_2_23-solaris-amd64.sh", + "name": "j2sdk-1_4_2_23-solaris-amd64.sh", + "title": "Java SE Development Kit 1.4.2_23 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_23/j2sdk-1_4_2_23-solaris-i586.sh", + "name": "j2sdk-1_4_2_23-solaris-i586.sh", + "title": "Java SE Development Kit 1.4.2_23 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_23/j2sdk-1_4_2_23-solaris-sparc.sh", + "name": "j2sdk-1_4_2_23-solaris-sparc.sh", + "title": "Java SE Development Kit 1.4.2_23 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_23/j2sdk-1_4_2_23-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_23-solaris-sparcv9.sh", + "title": "Java SE Development Kit 1.4.2_23 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_23-oth-JPR", + "title": "Java SE Development Kit 1.4.2_23" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_22/j2sdk-1_4_2_22-solaris-amd64.sh", + "name": "j2sdk-1_4_2_22-solaris-amd64.sh", + "title": "Java SE Development Kit 1.4.2_22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_22/j2sdk-1_4_2_22-solaris-i586.sh", + "name": "j2sdk-1_4_2_22-solaris-i586.sh", + "title": "Java SE Development Kit 1.4.2_22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_22/j2sdk-1_4_2_22-solaris-sparc.sh", + "name": "j2sdk-1_4_2_22-solaris-sparc.sh", + "title": "Java SE Development Kit 1.4.2_22 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_22/j2sdk-1_4_2_22-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_22-solaris-sparcv9.sh", + "title": "Java SE Development Kit 1.4.2_22 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_22-oth-JPR", + "title": "Java SE Development Kit 1.4.2_22" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_19/j2sdk-1_4_2_19-linux-i586.bin", + "name": "j2sdk-1_4_2_19-linux-i586.bin", + "title": "Java SE Development Kit 1.4.2_19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_19/j2sdk-1_4_2_19-linux-ia64.bin", + "name": "j2sdk-1_4_2_19-linux-ia64.bin", + "title": "Java SE Development Kit 1.4.2_19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_19/j2sdk-1_4_2_19-solaris-i586.sh", + "name": "j2sdk-1_4_2_19-solaris-i586.sh", + "title": "Java SE Development Kit 1.4.2_19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_19/j2sdk-1_4_2_19-solaris-sparc.sh", + "name": "j2sdk-1_4_2_19-solaris-sparc.sh", + "title": "Java SE Development Kit 1.4.2_19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_19/j2sdk-1_4_2_19-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_19-solaris-sparcv9.sh", + "title": "Java SE Development Kit 1.4.2_19 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_19/j2sdk-1_4_2_19-windows-i586-p.exe", + "name": "j2sdk-1_4_2_19-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_19/j2sdk-1_4_2_19-windows-ia64.exe", + "name": "j2sdk-1_4_2_19-windows-ia64.exe", + "title": "Java SE Development Kit 1.4.2_19 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_19-oth-JPR", + "title": "Java SE Development Kit 1.4.2_19" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_18/j2sdk-1_4_2_18-linux-i586.bin", + "name": "j2sdk-1_4_2_18-linux-i586.bin", + "title": "Java SE Development Kit 1.4.2_18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_18/j2sdk-1_4_2_18-linux-ia64.bin", + "name": "j2sdk-1_4_2_18-linux-ia64.bin", + "title": "Java SE Development Kit 1.4.2_18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_18/j2sdk-1_4_2_18-solaris-i586.sh", + "name": "j2sdk-1_4_2_18-solaris-i586.sh", + "title": "Java SE Development Kit 1.4.2_18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_18/j2sdk-1_4_2_18-solaris-sparc.sh", + "name": "j2sdk-1_4_2_18-solaris-sparc.sh", + "title": "Java SE Development Kit 1.4.2_18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_18/j2sdk-1_4_2_18-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_18-solaris-sparcv9.sh", + "title": "Java SE Development Kit 1.4.2_18 " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_18/j2sdk-1_4_2_18-windows-i586-p.exe", + "name": "j2sdk-1_4_2_18-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_18/j2sdk-1_4_2_18-windows-ia64.exe", + "name": "j2sdk-1_4_2_18-windows-ia64.exe", + "title": "Java SE Development Kit 1.4.2_18 " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_18-oth-JPR", + "title": "Java SE Development Kit 1.4.2_18" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/j2sdk-1_4_2_17-linux-i586.bin", + "name": "j2sdk-1_4_2_17-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/j2sdk-1_4_2_17-linux-ia64.bin", + "name": "j2sdk-1_4_2_17-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/j2sdk-1_4_2_17-solaris-i586.sh", + "name": "j2sdk-1_4_2_17-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/j2sdk-1_4_2_17-solaris-sparc.sh", + "name": "j2sdk-1_4_2_17-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/j2sdk-1_4_2_17-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_17-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/j2sdk-1_4_2_17-windows-i586-p.exe", + "name": "j2sdk-1_4_2_17-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/j2sdk-1_4_2_17-windows-ia64.exe", + "name": "j2sdk-1_4_2_17-windows-ia64.exe", + "title": "Windows Offline Installation " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_17-oth-JPR", + "title": "Java SE Development Kit 1.4.2_17" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_16/j2sdk-1_4_2_16-linux-i586.bin", + "name": "j2sdk-1_4_2_16-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_16/j2sdk-1_4_2_16-linux-ia64.bin", + "name": "j2sdk-1_4_2_16-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_16/j2sdk-1_4_2_16-solaris-i586.sh", + "name": "j2sdk-1_4_2_16-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_16/j2sdk-1_4_2_16-solaris-sparc.sh", + "name": "j2sdk-1_4_2_16-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_16/j2sdk-1_4_2_16-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_16-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_16/j2sdk-1_4_2_16-windows-i586-p.exe", + "name": "j2sdk-1_4_2_16-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_16/j2sdk-1_4_2_16-windows-ia64.exe", + "name": "j2sdk-1_4_2_16-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_16-oth-JPR", + "title": "Java SE Development Kit 1.4.2_16" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_15/j2sdk-1_4_2_15-linux-i586.bin", + "name": "j2sdk-1_4_2_15-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_15/j2sdk-1_4_2_15-linux-ia64.bin", + "name": "j2sdk-1_4_2_15-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_15/j2sdk-1_4_2_15-solaris-i586.sh", + "name": "j2sdk-1_4_2_15-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_15/j2sdk-1_4_2_15-solaris-sparc.sh", + "name": "j2sdk-1_4_2_15-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_15/j2sdk-1_4_2_15-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_15-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_15/j2sdk-1_4_2_15-windows-i586-p.exe", + "name": "j2sdk-1_4_2_15-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_15/j2sdk-1_4_2_15-windows-ia64.exe", + "name": "j2sdk-1_4_2_15-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_15-oth-JPR", + "title": "Java SE Development Kit 1.4.2_15" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_14/j2sdk-1_4_2_14-linux-i586.bin", + "name": "j2sdk-1_4_2_14-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_14/j2sdk-1_4_2_14-linux-ia64.bin", + "name": "j2sdk-1_4_2_14-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_14/j2sdk-1_4_2_14-solaris-i586.sh", + "name": "j2sdk-1_4_2_14-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_14/j2sdk-1_4_2_14-solaris-sparc.sh", + "name": "j2sdk-1_4_2_14-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_14/j2sdk-1_4_2_14-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_14-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_14/j2sdk-1_4_2_14-windows-i586-p.exe", + "name": "j2sdk-1_4_2_14-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_14/j2sdk-1_4_2_14-windows-ia64.exe", + "name": "j2sdk-1_4_2_14-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_14-oth-JPR", + "title": "Java SE Development Kit 1.4.2_14" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_13/j2sdk-1_4_2_13-linux-i586.bin", + "name": "j2sdk-1_4_2_13-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_13/j2sdk-1_4_2_13-linux-ia64.bin", + "name": "j2sdk-1_4_2_13-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_13/j2sdk-1_4_2_13-solaris-i586.sh", + "name": "j2sdk-1_4_2_13-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_13/j2sdk-1_4_2_13-solaris-sparc.sh", + "name": "j2sdk-1_4_2_13-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_13/j2sdk-1_4_2_13-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_13-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_13/j2sdk-1_4_2_13-windows-i586-p.exe", + "name": "j2sdk-1_4_2_13-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_13/j2sdk-1_4_2_13-windows-ia64.exe", + "name": "j2sdk-1_4_2_13-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_13-oth-JPR", + "title": "Java SE Development Kit 1.4.2_13" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_12/j2sdk-1_4_2_12-linux-i586.bin", + "name": "j2sdk-1_4_2_12-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_12/j2sdk-1_4_2_12-linux-ia64.bin", + "name": "j2sdk-1_4_2_12-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_12/j2sdk-1_4_2_12-solaris-i586.sh", + "name": "j2sdk-1_4_2_12-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_12/j2sdk-1_4_2_12-solaris-sparc.sh", + "name": "j2sdk-1_4_2_12-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_12/j2sdk-1_4_2_12-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_12-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_12/j2sdk-1_4_2_12-windows-i586-p.exe", + "name": "j2sdk-1_4_2_12-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_12/j2sdk-1_4_2_12-windows-ia64.exe", + "name": "j2sdk-1_4_2_12-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_12-oth-JPR", + "title": "Java SE Development Kit 1.4.2_12" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_11/j2sdk-1_4_2_11-linux-i586.bin", + "name": "j2sdk-1_4_2_11-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_11/j2sdk-1_4_2_11-linux-ia64.bin", + "name": "j2sdk-1_4_2_11-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_11/j2sdk-1_4_2_11-solaris-i586.sh", + "name": "j2sdk-1_4_2_11-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_11/j2sdk-1_4_2_11-solaris-sparc.sh", + "name": "j2sdk-1_4_2_11-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_11/j2sdk-1_4_2_11-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_11-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_11/j2sdk-1_4_2_11-windows-i586-p.exe", + "name": "j2sdk-1_4_2_11-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_11/j2sdk-1_4_2_11-windows-ia64.exe", + "name": "j2sdk-1_4_2_11-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_11-oth-JPR", + "title": "Java SE Development Kit 1.4.2_11" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_10/j2sdk-1_4_2_10-linux-i586.bin", + "name": "j2sdk-1_4_2_10-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_10/j2sdk-1_4_2_10-linux-ia64.bin", + "name": "j2sdk-1_4_2_10-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_10/j2sdk-1_4_2_10-solaris-i586.sh", + "name": "j2sdk-1_4_2_10-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_10/j2sdk-1_4_2_10-solaris-sparc.sh", + "name": "j2sdk-1_4_2_10-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_10/j2sdk-1_4_2_10-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_10-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_10/j2sdk-1_4_2_10-windows-i586-p.exe", + "name": "j2sdk-1_4_2_10-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_10/j2sdk-1_4_2_10-windows-ia64.exe", + "name": "j2sdk-1_4_2_10-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_10-oth-JPR", + "title": "Java SE Development Kit 1.4.2_10" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_09/j2sdk-1_4_2_09-linux-i586.bin", + "name": "j2sdk-1_4_2_09-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_09/j2sdk-1_4_2_09-linux-ia64.bin", + "name": "j2sdk-1_4_2_09-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_09/j2sdk-1_4_2_09-solaris-i586.sh", + "name": "j2sdk-1_4_2_09-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_09/j2sdk-1_4_2_09-solaris-sparc.sh", + "name": "j2sdk-1_4_2_09-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_09/j2sdk-1_4_2_09-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_09-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_09/j2sdk-1_4_2_09-windows-i586-p.exe", + "name": "j2sdk-1_4_2_09-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_09/j2sdk-1_4_2_09-windows-ia64.exe", + "name": "j2sdk-1_4_2_09-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_09-oth-JPR", + "title": "Java SE Development Kit 1.4.2_09" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_08/j2sdk-1_4_2_08-linux-i586.bin", + "name": "j2sdk-1_4_2_08-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_08/j2sdk-1_4_2_08-linux-ia64.bin", + "name": "j2sdk-1_4_2_08-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_08/j2sdk-1_4_2_08-solaris-i586.sh", + "name": "j2sdk-1_4_2_08-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_08/j2sdk-1_4_2_08-solaris-sparc.sh", + "name": "j2sdk-1_4_2_08-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_08/j2sdk-1_4_2_08-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_08-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_08/j2sdk-1_4_2_08-windows-i586-p.exe", + "name": "j2sdk-1_4_2_08-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_08/j2sdk-1_4_2_08-windows-ia64.exe", + "name": "j2sdk-1_4_2_08-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_08-oth-JPR", + "title": "Java SE Development Kit 1.4.2_08" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_07/j2sdk-1_4_2_07-linux-i586.bin", + "name": "j2sdk-1_4_2_07-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_07/j2sdk-1_4_2_07-linux-ia64.bin", + "name": "j2sdk-1_4_2_07-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_07/j2sdk-1_4_2_07-solaris-i586.sh", + "name": "j2sdk-1_4_2_07-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_07/j2sdk-1_4_2_07-solaris-sparc.sh", + "name": "j2sdk-1_4_2_07-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_07/j2sdk-1_4_2_07-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_07-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_07/j2sdk-1_4_2_07-windows-i586-p.exe", + "name": "j2sdk-1_4_2_07-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_07/j2sdk-1_4_2_07-windows-ia64.exe", + "name": "j2sdk-1_4_2_07-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_07-oth-JPR", + "title": "Java SE Development Kit 1.4.2_07" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_06/j2sdk-1_4_2_06-linux-i586.bin", + "name": "j2sdk-1_4_2_06-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_06/j2sdk-1_4_2_06-linux-ia64.bin", + "name": "j2sdk-1_4_2_06-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_06/j2sdk-1_4_2_06-solaris-i586.sh", + "name": "j2sdk-1_4_2_06-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_06/j2sdk-1_4_2_06-solaris-sparc.sh", + "name": "j2sdk-1_4_2_06-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_06/j2sdk-1_4_2_06-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_06-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_06/j2sdk-1_4_2_06-windows-i586-p.exe", + "name": "j2sdk-1_4_2_06-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_06/j2sdk-1_4_2_06-windows-ia64.exe", + "name": "j2sdk-1_4_2_06-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_06-oth-JPR", + "title": "Java SE Development Kit 1.4.2_06" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_05/j2sdk-1_4_2_05-linux-i586.bin", + "name": "j2sdk-1_4_2_05-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_05/j2sdk-1_4_2_05-linux-ia64.bin", + "name": "j2sdk-1_4_2_05-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_05/j2sdk-1_4_2_05-solaris-i586.sh", + "name": "j2sdk-1_4_2_05-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_05/j2sdk-1_4_2_05-solaris-sparc.sh", + "name": "j2sdk-1_4_2_05-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_05/j2sdk-1_4_2_05-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_05-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_05/j2sdk-1_4_2_05-windows-i586-p.exe", + "name": "j2sdk-1_4_2_05-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_05/j2sdk-1_4_2_05-windows-ia64.exe", + "name": "j2sdk-1_4_2_05-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_05-oth-JPR", + "title": "Java SE Development Kit 1.4.2_05" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_04/j2sdk-1_4_2_04-linux-i586.bin", + "name": "j2sdk-1_4_2_04-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_04/j2sdk-1_4_2_04-linux-ia64.bin", + "name": "j2sdk-1_4_2_04-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_04/j2sdk-1_4_2_04-solaris-i586.sh", + "name": "j2sdk-1_4_2_04-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_04/j2sdk-1_4_2_04-solaris-sparc.sh", + "name": "j2sdk-1_4_2_04-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_04/j2sdk-1_4_2_04-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_04-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_04/j2sdk-1_4_2_04-windows-i586-p.exe", + "name": "j2sdk-1_4_2_04-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_04/j2sdk-1_4_2_04-windows-ia64.exe", + "name": "j2sdk-1_4_2_04-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_04-oth-JPR", + "title": "Java SE Development Kit 1.4.2_04" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_03/j2sdk-1_4_2_03-linux-i586.bin", + "name": "j2sdk-1_4_2_03-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_03/j2sdk-1_4_2_03-linux-ia64.bin", + "name": "j2sdk-1_4_2_03-linux-ia64.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_03/j2sdk-1_4_2_03-solaris-i586.sh", + "name": "j2sdk-1_4_2_03-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_03/j2sdk-1_4_2_03-solaris-sparc.sh", + "name": "j2sdk-1_4_2_03-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_03/j2sdk-1_4_2_03-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_03-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_03/j2sdk-1_4_2_03-windows-i586-p.exe", + "name": "j2sdk-1_4_2_03-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_03/j2sdk-1_4_2_03-windows-ia64.exe", + "name": "j2sdk-1_4_2_03-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.2_03-oth-JPR", + "title": "Java SE Development Kit 1.4.2_03" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_07/j2sdk-1_4_1_07-linux-i586.bin", + "name": "j2sdk-1_4_1_07-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_07/j2sdk-1_4_1_07-solaris-i586.sh", + "name": "j2sdk-1_4_1_07-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_07/j2sdk-1_4_1_07-solaris-sparc.sh", + "name": "j2sdk-1_4_1_07-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_07/j2sdk-1_4_1_07-solaris-sparcv9.sh", + "name": "j2sdk-1_4_1_07-solaris-sparcv9.sh", + "title": "64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_07/j2sdk-1_4_1_07-windows-i586.exe", + "name": "j2sdk-1_4_1_07-windows-i586.exe", + "title": "Windows (all languages, including English) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.1_07-oth-JPR", + "title": "Java SE Development Kit 1.4.1_07" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_06/j2sdk-1_4_1_06-linux-i586.bin", + "name": "j2sdk-1_4_1_06-linux-i586.bin", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_06/j2sdk-1_4_1_06-solaris-i586.sh", + "name": "j2sdk-1_4_1_06-solaris-i586.sh", + "title": "self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_06/j2sdk-1_4_1_06-solaris-sparc.sh", + "name": "j2sdk-1_4_1_06-solaris-sparc.sh", + "title": "32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_06/j2sdk-1_4_1_06-solaris-sparcv9.sh", + "name": "j2sdk-1_4_1_06-solaris-sparcv9.sh", + "title": "64-bit self-extracting file * " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_06/j2sdk-1_4_1_06-windows-i586.exe", + "name": "j2sdk-1_4_1_06-windows-i586.exe", + "title": "Windows (all languages, including English) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "j2sdk-1.4.1_06-oth-JPR", + "title": "Java SE Development Kit 1.4.1_06" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_02/j2sdk-1_4_2_02-linux-i586.bin", + "name": "j2sdk-1_4_2_02-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_02/j2sdk-1_4_2_02-linux-ia64.bin", + "name": "j2sdk-1_4_2_02-linux-ia64.bin", + "title": "Linux 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_02/j2sdk-1_4_2_02-solaris-i586.sh", + "name": "j2sdk-1_4_2_02-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_02/j2sdk-1_4_2_02-solaris-sparc.sh", + "name": "j2sdk-1_4_2_02-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_02/j2sdk-1_4_2_02-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_02-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_02/j2sdk-1_4_2_02-windows-i586-p.exe", + "name": "j2sdk-1_4_2_02-windows-i586-p.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_02/j2sdk-1_4_2_02-windows-ia64.exe", + "name": "j2sdk-1_4_2_02-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7741-j2sdk-1.4.2_02-oth-JPR", + "title": "Java SE Development Kit 1.4.2_02" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_01/j2sdk-1_4_2_01-linux-i586.bin", + "name": "j2sdk-1_4_2_01-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_01/j2sdk-1_4_2_01-linux-ia64.bin", + "name": "j2sdk-1_4_2_01-linux-ia64.bin", + "title": "Linux 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_01/j2sdk-1_4_2_01-solaris-i586.sh", + "name": "j2sdk-1_4_2_01-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_01/j2sdk-1_4_2_01-solaris-sparc.sh", + "name": "j2sdk-1_4_2_01-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_01/j2sdk-1_4_2_01-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2_01-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_01/j2sdk-1_4_2_01-windows-i586.exe", + "name": "j2sdk-1_4_2_01-windows-i586.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2_01/j2sdk-1_4_2_01-windows-ia64.exe", + "name": "j2sdk-1_4_2_01-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7639-j2sdk-1.4.2_01-oth-JPR", + "title": "Java SE Development Kit 1.4.2_01" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_05/j2sdk-1_4_1_05-linux-i586.bin", + "name": "j2sdk-1_4_1_05-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_05/j2sdk-1_4_1_05-solaris-i586.sh", + "name": "j2sdk-1_4_1_05-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_05/j2sdk-1_4_1_05-solaris-sparc.sh", + "name": "j2sdk-1_4_1_05-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_05/j2sdk-1_4_1_05-solaris-sparcv9.sh", + "name": "j2sdk-1_4_1_05-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_05/j2sdk-1_4_1_05-windows-i586.exe", + "name": "j2sdk-1_4_1_05-windows-i586.exe", + "title": "Windows (all languages, including English) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7637-j2sdk-1.4.1_05-oth-JPR", + "title": "Java SE Development Kit 1.4.1_05" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_04/j2sdk-1_4_1_04-linux-i586.bin", + "name": "j2sdk-1_4_1_04-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_04/j2sdk-1_4_1_04-solaris-i586.sh", + "name": "j2sdk-1_4_1_04-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_04/j2sdk-1_4_1_04-solaris-sparc.sh", + "name": "j2sdk-1_4_1_04-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_04/j2sdk-1_4_1_04-solaris-sparcv9.sh", + "name": "j2sdk-1_4_1_04-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_04/j2sdk-1_4_1_04-windows-i586.exe", + "name": "j2sdk-1_4_1_04-windows-i586.exe", + "title": "Windows (all languages, including English) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7533-j2sdk-1.4.1_04-oth-JPR", + "title": "Java SE Development Kit 1.4.1_04" + }, + { + "files": [ { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2/j2sdk-1_4_2-doc.zip", + "name": "j2sdk-1_4_2-doc.zip", + "title": "J2SE 1.4.2 Documentation " + }], + "licpath": "http://download.oracle.com/otn-pub/java/licenses/J2SE 1.4.2.txt", + "lictitle": "JDK Documentation License Agreement", + "name": "7502-j2sdk-1.4.2-doc-oth-JPR", + "title": "Java SE Development Kit Documentation 1.4.2" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2/j2sdk-1_4_2-linux-i586.bin", + "name": "j2sdk-1_4_2-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2/j2sdk-1_4_2-linux-ia64.bin", + "name": "j2sdk-1_4_2-linux-ia64.bin", + "title": "Linux 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2/j2sdk-1_4_2-solaris-i586.sh", + "name": "j2sdk-1_4_2-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2/j2sdk-1_4_2-solaris-sparc.sh", + "name": "j2sdk-1_4_2-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2/j2sdk-1_4_2-solaris-sparcv9.sh", + "name": "j2sdk-1_4_2-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2/j2sdk-1_4_2-windows-i586.exe", + "name": "j2sdk-1_4_2-windows-i586.exe", + "title": "Windows Offline Installation " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.2/j2sdk-1_4_2-windows-ia64.exe", + "name": "j2sdk-1_4_2-windows-ia64.exe", + "title": "Windows 64-bit " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7501-j2sdk-1.4.2-oth-JPR", + "title": "Java SE Development Kit 1.4.2" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_03/j2sdk-1_4_1_03-linux-i586.bin", + "name": "j2sdk-1_4_1_03-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_03/j2sdk-1_4_1_03-solaris-i586.sh", + "name": "j2sdk-1_4_1_03-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_03/j2sdk-1_4_1_03-solaris-sparc.sh", + "name": "j2sdk-1_4_1_03-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_03/j2sdk-1_4_1_03-solaris-sparcv9.sh", + "name": "j2sdk-1_4_1_03-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_03/j2sdk-1_4_1_03-windows-i586.exe", + "name": "j2sdk-1_4_1_03-windows-i586.exe", + "title": "Windows (all languages, including English) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7405-j2sdk-1.4.1_03-oth-JPR", + "title": "Java SE Development Kit 1.4.1_03" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_04/j2sdk-1_4_0_04-linux-i586.bin", + "name": "j2sdk-1_4_0_04-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_04/j2sdk-1_4_0_04-solaris-i586.sh", + "name": "j2sdk-1_4_0_04-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_04/j2sdk-1_4_0_04-solaris-sparc.sh", + "name": "j2sdk-1_4_0_04-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_04/j2sdk-1_4_0_04-solaris-sparcv9.sh", + "name": "j2sdk-1_4_0_04-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_04/j2sdk-1_4_0_04-windows-i586.exe", + "name": "j2sdk-1_4_0_04-windows-i586.exe", + "title": "Windows (all languages, including English) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7225-j2sdk-1.4.0_04-oth-JPR", + "title": "Java SE Development Kit 1.4.0_04" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_02/j2sdk-1_4_1_02-linux-i586.bin", + "name": "j2sdk-1_4_1_02-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_02/j2sdk-1_4_1_02-solaris-i586.sh", + "name": "j2sdk-1_4_1_02-solaris-i586.sh", + "title": "Solaris x86 self-extracting file (Solaris 7, Solaris 8) " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_02/j2sdk-1_4_1_02-solaris-sparc.sh", + "name": "j2sdk-1_4_1_02-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_02/j2sdk-1_4_1_02-solaris-sparcv9.sh", + "name": "j2sdk-1_4_1_02-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1_02/j2sdk-1_4_1_02-windows-i586.exe", + "name": "j2sdk-1_4_1_02-windows-i586.exe", + "title": "Windows (all languages, including English) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7190-j2sdk-1.4.1_02-oth-JPR", + "title": "Java SE Development Kit 1.4.1_02" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0/j2sdk-1_4_0-doc-ja.zip", + "name": "j2sdk-1_4_0-doc-ja.zip", + "title": "J2SE 1.4 Documentation, Japanese " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0/j2sdk-1_4_0-doc.zip", + "name": "j2sdk-1_4_0-doc.zip", + "title": "J2SE 1.4 Documentation, English " + } + ], + "licpath": "http://download.oracle.com/otn/java/licenses/J2SE 1.4.0.txt", + "lictitle": "Java SE Documentation License Agreement", + "name": "7114-j2sdk-1.4.0-doc-oth-JPR", + "title": "Java SE Development Kit Documentation 1.4.0" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_01/j2sdk-1_4_0_01-linux-i586.bin", + "name": "j2sdk-1_4_0_01-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_01/j2sdk-1_4_0_01-solaris-i586.sh", + "name": "j2sdk-1_4_0_01-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_01/j2sdk-1_4_0_01-solaris-sparc.sh", + "name": "j2sdk-1_4_0_01-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_01/j2sdk-1_4_0_01-solaris-sparcv9.sh", + "name": "j2sdk-1_4_0_01-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_01/j2sdk-1_4_0_01-windows-i586.exe", + "name": "j2sdk-1_4_0_01-windows-i586.exe", + "title": "Windows (all languages, including English) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7093-j2sdk-1.4.0_01-oth-JPR", + "title": "Java SE Development Kit 1.4.0_01" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_03/j2sdk-1_4_0_03-linux-i586.bin", + "name": "j2sdk-1_4_0_03-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_03/j2sdk-1_4_0_03-solaris-i586.sh", + "name": "j2sdk-1_4_0_03-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_03/j2sdk-1_4_0_03-solaris-sparc.sh", + "name": "j2sdk-1_4_0_03-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_03/j2sdk-1_4_0_03-solaris-sparcv9.sh", + "name": "j2sdk-1_4_0_03-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_03/j2sdk-1_4_0_03-windows-i586.exe", + "name": "j2sdk-1_4_0_03-windows-i586.exe", + "title": "Windows (all languages, including English) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7087-j2sdk-1.4.0_03-oth-JPR", + "title": "Java SE Development Kit 1.4.0_03" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0/j2sdk-1_4_0-linux-i386.bin", + "name": "j2sdk-1_4_0-linux-i386.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0/j2sdk-1_4_0-solsparc.sh", + "name": "j2sdk-1_4_0-solsparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0/j2sdk-1_4_0-solsparcv9.sh", + "name": "j2sdk-1_4_0-solsparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0/j2sdk-1_4_0-solx86.sh", + "name": "j2sdk-1_4_0-solx86.sh", + "title": "Solaris Intel self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0/j2sdk-1_4_0-win.exe", + "name": "j2sdk-1_4_0-win.exe", + "title": "Windows (all languages, including English) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7074-j2sdk-1.4.0-oth-JPR", + "title": "Java SE Development Kit 1.4.0" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1/j2sdk-1_4_1-linux-ia64.bin", + "name": "j2sdk-1_4_1-linux-ia64.bin", + "title": "Linux 64-bit (Itanium) self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1/j2sdk-1_4_1-windows-ia64.tar", + "name": "j2sdk-1_4_1-windows-ia64.tar", + "title": "Windows 64-bit (Itanium) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7027-j2sdk-1.4.1-ia64-JPR", + "title": "Java SE Development Kit 1.4.1-ia64" + }, + { + "files": [ { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1/j2sdk-1_4_1-doc.zip", + "name": "j2sdk-1_4_1-doc.zip", + "title": "J2SE 1.4.1 Documentation " + }], + "licpath": "http://download.oracle.com/otn-pub/java/licenses/J2SE 1.4.1.txt", + "lictitle": "Java SE Documentation License Agreement", + "name": "7020-j2sdk-1.4.1-doc-oth-JPR", + "title": "Java SE Development Kit Documentation 1.4.1" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1/j2sdk-1_4_1-linux-i586.bin", + "name": "j2sdk-1_4_1-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1/j2sdk-1_4_1-solaris-i586.sh", + "name": "j2sdk-1_4_1-solaris-i586.sh", + "title": "Solaris x86 self-extracting file (Solaris 7, Solaris 8) " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1/j2sdk-1_4_1-solaris-sparc.sh", + "name": "j2sdk-1_4_1-solaris-sparc.sh", + "title": "Solaris SPARC self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1/j2sdk-1_4_1-solaris-sparcv9.sh", + "name": "j2sdk-1_4_1-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.1/j2sdk-1_4_1-windows-i586.exe", + "name": "j2sdk-1_4_1-windows-i586.exe", + "title": "Windows (all languages, including English) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7018-j2sdk-1.4.1-oth-JPR", + "title": "Java SE Development Kit 1.4.1" + }, + { + "files": [ + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_02/j2sdk-1_4_0_02-linux-i586.bin", + "name": "j2sdk-1_4_0_02-linux-i586.bin", + "title": "Linux self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_02/j2sdk-1_4_0_02-linux-i586.tar.gz", + "name": "j2sdk-1_4_0_02-linux-i586.tar.gz", + "title": "Java SE Development Kit " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_02/j2sdk-1_4_0_02-solaris-i586.sh", + "name": "j2sdk-1_4_0_02-solaris-i586.sh", + "title": "Solaris x86 self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_02/j2sdk-1_4_0_02-solaris-sparc.sh", + "name": "j2sdk-1_4_0_02-solaris-sparc.sh", + "title": "Solaris SPARC 32-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_02/j2sdk-1_4_0_02-solaris-sparcv9.sh", + "name": "j2sdk-1_4_0_02-solaris-sparcv9.sh", + "title": "Solaris SPARC 64-bit self-extracting file " + }, + { + "filepath": "http://download.oracle.com/otn/java/j2sdk/1.4.0_02/j2sdk-1_4_0_02-windows-i586.exe", + "name": "j2sdk-1_4_0_02-windows-i586.exe", + "title": "Windows (all languages, including English) " + } + ], + "licpath": "/technetwork/java/javase/downloads/java-se-archive-license-1382604.html", + "lictitle": "Oracle Binary Code License Agreement for Java SE", + "name": "7013-j2sdk-1.4.0_02-oth-JPR", + "title": "Java SE Development Kit 1.4.0_02" + } + ] + } + ], + "version": 2 +}) \ No newline at end of file From 6c6e1751feadb17ada65e8e53612eea6840ee175 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Fri, 28 Feb 2014 10:20:54 -0500 Subject: [PATCH 07/25] Deleting failing test updateDirectlyWithHtml. loadJSON does not support parsing HTML. Nor should it need to, since UC URLs are supposed to be to the JSONP file. The .html extension is added automatically by downloadService when postBack is supported. (cherry picked from commit d6b37a94579a0d01359ba393f792fc0823275593) Conflicts: test/src/test/java/hudson/model/UpdateSiteTest.java test/src/test/resources/hudson/model/update-center.json.html --- test/src/test/java/hudson/model/UpdateSiteTest.java | 6 ------ .../src/test/resources/hudson/model/update-center.json.html | 3 --- 2 files changed, 9 deletions(-) delete mode 100644 test/src/test/resources/hudson/model/update-center.json.html diff --git a/test/src/test/java/hudson/model/UpdateSiteTest.java b/test/src/test/java/hudson/model/UpdateSiteTest.java index d7b8bc4783..1f0971ea62 100644 --- a/test/src/test/java/hudson/model/UpdateSiteTest.java +++ b/test/src/test/java/hudson/model/UpdateSiteTest.java @@ -128,10 +128,4 @@ public class UpdateSiteTest { assertNotNull(us.getPlugin("AdaptivePlugin")); } - @Test public void updateDirectlyWithHtml() throws Exception { - UpdateSite us = new UpdateSite("default", new URL(baseUrl, "update-center.json.html").toExternalForm()); - assertNull(us.getPlugin("AdaptivePlugin")); - assertEquals(FormValidation.ok(), us.updateDirectly(false).get()); - assertNotNull(us.getPlugin("AdaptivePlugin")); - } } diff --git a/test/src/test/resources/hudson/model/update-center.json.html b/test/src/test/resources/hudson/model/update-center.json.html deleted file mode 100644 index 43cfa5c37c..0000000000 --- a/test/src/test/resources/hudson/model/update-center.json.html +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file From 8311fb5c7f74d0a1b2ee057fd3bc5585b3b2cee1 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Fri, 28 Feb 2014 10:52:54 -0500 Subject: [PATCH 08/25] May as well use new DownloadService.loadJSON method here. (cherry picked from commit 1c99cc1af00eb52f6d9ae1963f9db7c12c1fbb5a) --- test/src/test/java/hudson/model/UpdateCenterTest.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/test/src/test/java/hudson/model/UpdateCenterTest.java b/test/src/test/java/hudson/model/UpdateCenterTest.java index 96250ff032..0fc68a1a04 100644 --- a/test/src/test/java/hudson/model/UpdateCenterTest.java +++ b/test/src/test/java/hudson/model/UpdateCenterTest.java @@ -26,7 +26,6 @@ package hudson.model; import com.trilead.ssh2.crypto.Base64; import hudson.util.TimeUnit2; import net.sf.json.JSONObject; -import org.apache.commons.io.IOUtils; import java.io.ByteArrayInputStream; import java.net.URL; @@ -57,8 +56,8 @@ public class UpdateCenterTest { } private void doData(String location) throws Exception { URL url = new URL(location); - String jsonp = IOUtils.toString(url.openStream()); - JSONObject json = JSONObject.fromObject(jsonp.substring(jsonp.indexOf('(') + 1, jsonp.lastIndexOf(')'))); + String jsonp = DownloadService.loadJSON(url); + JSONObject json = JSONObject.fromObject(jsonp); UpdateSite us = new UpdateSite("default", url.toExternalForm()); UpdateSite.Data data = us.new Data(json); From d00f7ab9b62d1524bb286c4bb7be9274adae29cd Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Mon, 17 Mar 2014 12:48:24 -0400 Subject: [PATCH 09/25] Removed DownloadSettings.checkSignature; back to using a plain system property for this. (cherry picked from commit df9c92e461443415be06743f0f8fc0b3937f2408) --- core/src/main/java/hudson/PluginManager.java | 3 +- .../java/hudson/model/DownloadService.java | 11 ++++-- .../main/java/hudson/model/UpdateCenter.java | 3 +- .../main/java/hudson/model/UpdateSite.java | 2 +- .../{security => model}/DownloadSettings.java | 37 +------------------ .../hudson/PluginManager/advanced.jelly | 2 +- .../PageDecoratorImpl/footer.jelly | 2 +- .../model/DownloadSettings/config.groovy | 9 +++++ .../DownloadSettings/help-useBrowser.html | 0 .../security/DownloadSettings/config.groovy | 14 ------- .../DownloadSettings/help-checkSignature.html | 4 -- .../jenkins/security/Messages.properties | 4 +- .../hudson/model/DownloadServiceTest.java | 5 +-- 13 files changed, 26 insertions(+), 70 deletions(-) rename core/src/main/java/jenkins/{security => model}/DownloadSettings.java (66%) create mode 100644 core/src/main/resources/jenkins/model/DownloadSettings/config.groovy rename core/src/main/resources/jenkins/{security => model}/DownloadSettings/help-useBrowser.html (100%) delete mode 100644 core/src/main/resources/jenkins/security/DownloadSettings/config.groovy delete mode 100644 core/src/main/resources/jenkins/security/DownloadSettings/help-checkSignature.html diff --git a/core/src/main/java/hudson/PluginManager.java b/core/src/main/java/hudson/PluginManager.java index 40f577f4e5..c444105b96 100644 --- a/core/src/main/java/hudson/PluginManager.java +++ b/core/src/main/java/hudson/PluginManager.java @@ -111,7 +111,6 @@ import static hudson.init.InitMilestone.*; import hudson.model.DownloadService; import hudson.util.FormValidation; import static java.util.logging.Level.WARNING; -import jenkins.security.DownloadSettings; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.NoExternalUse; @@ -783,7 +782,7 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas @Restricted(NoExternalUse.class) @RequirePOST public HttpResponse doCheckUpdatesServer() throws IOException { for (UpdateSite site : Jenkins.getInstance().getUpdateCenter().getSites()) { - FormValidation v = site.updateDirectlyNow(DownloadSettings.get().isCheckSignature()); + FormValidation v = site.updateDirectlyNow(DownloadService.signatureCheck); if (v.kind != FormValidation.Kind.OK) { // TODO crude but enough for now return v; diff --git a/core/src/main/java/hudson/model/DownloadService.java b/core/src/main/java/hudson/model/DownloadService.java index 2e592d8222..bedf45db0f 100644 --- a/core/src/main/java/hudson/model/DownloadService.java +++ b/core/src/main/java/hudson/model/DownloadService.java @@ -37,7 +37,7 @@ import java.io.InputStream; import java.net.URL; import java.net.URLEncoder; import java.util.logging.Logger; -import jenkins.security.DownloadSettings; +import jenkins.model.DownloadSettings; import jenkins.model.Jenkins; import jenkins.util.JSONSignatureValidator; import net.sf.json.JSONException; @@ -302,7 +302,7 @@ public class DownloadService extends PageDecorator { private FormValidation load(String json, long dataTimestamp) throws IOException { JSONObject o = JSONObject.fromObject(json); - if (DownloadSettings.get().isCheckSignature()) { + if (signatureCheck) { FormValidation e = new JSONSignatureValidator("downloadable '"+id+"'").verifySignature(o); if (e.kind!= Kind.OK) { return e; @@ -346,7 +346,12 @@ public class DownloadService extends PageDecorator { public static boolean neverUpdate = Boolean.getBoolean(DownloadService.class.getName()+".never"); - /** Now used only to set default value of, and enable UI switching of, {@link DownloadSettings#setIgnoreSignature}. */ + /** + * May be used to temporarily disable signature checking on {@link DownloadService} and {@link UpdateCenter}. + * Useful when upstream signatures are broken, such as due to expired certificates. + * Should only be used when {@link DownloadSettings#isUseBrowser}; + * disabling signature checks for in-browser downloads is very dangerous as unprivileged users could submit spoofed metadata! + */ public static boolean signatureCheck = !Boolean.getBoolean(DownloadService.class.getName()+".noSignatureCheck"); } diff --git a/core/src/main/java/hudson/model/UpdateCenter.java b/core/src/main/java/hudson/model/UpdateCenter.java index b7ec3a4e30..040c288f75 100644 --- a/core/src/main/java/hudson/model/UpdateCenter.java +++ b/core/src/main/java/hudson/model/UpdateCenter.java @@ -88,7 +88,6 @@ import java.util.jar.JarFile; import java.util.logging.Level; import java.util.logging.Logger; import javax.annotation.CheckForNull; -import jenkins.security.DownloadSettings; import org.acegisecurity.context.SecurityContextHolder; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.NoExternalUse; @@ -631,7 +630,7 @@ public class UpdateCenter extends AbstractModelObject implements Saveable, OnMas public List updateAllSites() throws InterruptedException, ExecutionException { List > futures = new ArrayList>(); for (UpdateSite site : getSites()) { - Future future = site.updateDirectly(DownloadSettings.get().isCheckSignature()); + Future future = site.updateDirectly(DownloadService.signatureCheck); if (future != null) { futures.add(future); } diff --git a/core/src/main/java/hudson/model/UpdateSite.java b/core/src/main/java/hudson/model/UpdateSite.java index 1681aabab1..006b8a003b 100644 --- a/core/src/main/java/hudson/model/UpdateSite.java +++ b/core/src/main/java/hudson/model/UpdateSite.java @@ -56,7 +56,7 @@ import org.apache.commons.io.IOUtils; import javax.annotation.CheckForNull; import javax.annotation.Nonnull; import jenkins.model.Jenkins; -import jenkins.security.DownloadSettings; +import jenkins.model.DownloadSettings; import jenkins.util.JSONSignatureValidator; import net.sf.json.JSONException; import net.sf.json.JSONObject; diff --git a/core/src/main/java/jenkins/security/DownloadSettings.java b/core/src/main/java/jenkins/model/DownloadSettings.java similarity index 66% rename from core/src/main/java/jenkins/security/DownloadSettings.java rename to core/src/main/java/jenkins/model/DownloadSettings.java index 9961e64a06..0cf410c28b 100644 --- a/core/src/main/java/jenkins/security/DownloadSettings.java +++ b/core/src/main/java/jenkins/model/DownloadSettings.java @@ -22,24 +22,19 @@ * THE SOFTWARE. */ -package jenkins.security; +package jenkins.model; import hudson.Extension; -import hudson.PluginManager; import hudson.model.AsyncPeriodicWork; import hudson.model.DownloadService; import hudson.model.TaskListener; import hudson.model.UpdateSite; import hudson.util.FormValidation; import java.io.IOException; -import jenkins.model.GlobalConfiguration; -import jenkins.model.GlobalConfigurationCategory; -import jenkins.model.Jenkins; import net.sf.json.JSONObject; import org.kohsuke.accmod.Restricted; import org.kohsuke.accmod.restrictions.NoExternalUse; import org.kohsuke.stapler.HttpResponse; -import org.kohsuke.stapler.QueryParameter; import org.kohsuke.stapler.StaplerRequest; /** @@ -55,17 +50,11 @@ import org.kohsuke.stapler.StaplerRequest; } private boolean useBrowser = true; // historical default, not necessarily recommended - @SuppressWarnings("deprecation") - private boolean checkSignature = DownloadService.signatureCheck; public DownloadSettings() { load(); } - @Override public GlobalConfigurationCategory getCategory() { - return GlobalConfigurationCategory.get(GlobalConfigurationCategory.Security.class); - } - @Override public boolean configure(StaplerRequest req, JSONObject json) throws FormException { req.bindJSON(this, json); return true; @@ -80,30 +69,6 @@ import org.kohsuke.stapler.StaplerRequest; save(); } - public boolean isCheckSignature() { - return checkSignature; - } - - public void setCheckSignature(boolean checkSignature) { - if (!checkSignature) { - // Just to be on the safe side. Normally this is implied by ADMINISTER, needed to configure the security screen anyway, - // but in case ADMINISTER but not CONFIGURE_UPDATECENTER is somehow granted, make sure signature checking cannot be disabled. - Jenkins.getInstance().checkPermission(PluginManager.CONFIGURE_UPDATECENTER); - } - this.checkSignature = checkSignature; - save(); - } - - public FormValidation doCheckCheckSignature(@QueryParameter boolean value, @QueryParameter boolean useBrowser) { - if (value) { - return FormValidation.ok(); - } else if (useBrowser) { - return FormValidation.warningWithMarkup(Messages.DownloadSettings_disabling_signature_checks_for_in_browse()); - } else { - return FormValidation.warningWithMarkup(Messages.DownloadSettings_disabling_signature_checks_is_not_recomm()); - } - } - @Extension public static final class DailyCheck extends AsyncPeriodicWork { public DailyCheck() { diff --git a/core/src/main/resources/hudson/PluginManager/advanced.jelly b/core/src/main/resources/hudson/PluginManager/advanced.jelly index 79dc056fbc..b6ade3c2d5 100644 --- a/core/src/main/resources/hudson/PluginManager/advanced.jelly +++ b/core/src/main/resources/hudson/PluginManager/advanced.jelly @@ -96,7 +96,7 @@ THE SOFTWARE.
- +
${%lastUpdated(app.updateCenter.lastUpdatedString)} diff --git a/core/src/main/resources/hudson/model/UpdateCenter/PageDecoratorImpl/footer.jelly b/core/src/main/resources/hudson/model/UpdateCenter/PageDecoratorImpl/footer.jelly index 1751517592..777f1192c7 100644 --- a/core/src/main/resources/hudson/model/UpdateCenter/PageDecoratorImpl/footer.jelly +++ b/core/src/main/resources/hudson/model/UpdateCenter/PageDecoratorImpl/footer.jelly @@ -31,7 +31,7 @@ THE SOFTWARE. --> - + diff --git a/core/src/main/resources/jenkins/model/DownloadSettings/config.groovy b/core/src/main/resources/jenkins/model/DownloadSettings/config.groovy new file mode 100644 index 0000000000..9c8987f561 --- /dev/null +++ b/core/src/main/resources/jenkins/model/DownloadSettings/config.groovy @@ -0,0 +1,9 @@ +package jenkins.security.DownloadSettings + +def f = namespace(lib.FormTagLib) + +f.section(title: _("Download Preferences")) { + f.entry(title: _("Use Browser"), field: "useBrowser") { + f.checkbox() + } +} diff --git a/core/src/main/resources/jenkins/security/DownloadSettings/help-useBrowser.html b/core/src/main/resources/jenkins/model/DownloadSettings/help-useBrowser.html similarity index 100% rename from core/src/main/resources/jenkins/security/DownloadSettings/help-useBrowser.html rename to core/src/main/resources/jenkins/model/DownloadSettings/help-useBrowser.html diff --git a/core/src/main/resources/jenkins/security/DownloadSettings/config.groovy b/core/src/main/resources/jenkins/security/DownloadSettings/config.groovy deleted file mode 100644 index 90c81a0dab..0000000000 --- a/core/src/main/resources/jenkins/security/DownloadSettings/config.groovy +++ /dev/null @@ -1,14 +0,0 @@ -package jenkins.security.DownloadSettings - -def f = namespace(lib.FormTagLib) - -f.section(title: _("Download Preferences")) { - f.entry(title: _("Use Browser"), field: "useBrowser") { - f.checkbox() - } - if (!instance.checkSignature || !hudson.model.DownloadService.signatureCheck) { // do not display this option by default - f.entry(title: _("Check Signatures"), field: "checkSignature") { - f.checkbox() - } - } -} diff --git a/core/src/main/resources/jenkins/security/DownloadSettings/help-checkSignature.html b/core/src/main/resources/jenkins/security/DownloadSettings/help-checkSignature.html deleted file mode 100644 index d639bbaf78..0000000000 --- a/core/src/main/resources/jenkins/security/DownloadSettings/help-checkSignature.html +++ /dev/null @@ -1,4 +0,0 @@ -
- Uncheck to skip the signature check on downloaded metadata. - This is generally dangerous and should only be used as an emergency measure when dealing with broken upstream metadata. -
diff --git a/core/src/main/resources/jenkins/security/Messages.properties b/core/src/main/resources/jenkins/security/Messages.properties index 2c93ecc382..fc71097d03 100644 --- a/core/src/main/resources/jenkins/security/Messages.properties +++ b/core/src/main/resources/jenkins/security/Messages.properties @@ -22,6 +22,4 @@ ApiTokenProperty.DisplayName=API Token ApiTokenProperty.ChangeToken.Success=
Updated
-DownloadSettings.disabling_signature_checks_for_in_browse=Disabling signature checks for in-browser downloads is very dangerous as unprivileged users could submit spoofed metadata! -DownloadSettings.disabling_signature_checks_is_not_recomm=Disabling signature checks is not recommended except as a temporary measure when upstream metadata is broken, such as due to expired certificates. -RekeySecretAdminMonitor.DisplayName=Re-keying +RekeySecretAdminMonitor.DisplayName=Re-keying \ No newline at end of file diff --git a/test/src/test/java/hudson/model/DownloadServiceTest.java b/test/src/test/java/hudson/model/DownloadServiceTest.java index 50ff400070..0b01c00c9f 100644 --- a/test/src/test/java/hudson/model/DownloadServiceTest.java +++ b/test/src/test/java/hudson/model/DownloadServiceTest.java @@ -5,7 +5,6 @@ import java.io.IOException; import java.net.URL; import java.util.Set; import java.util.TreeSet; -import jenkins.security.DownloadSettings; import net.sf.json.JSONObject; import org.jvnet.hudson.test.Bug; import org.jvnet.hudson.test.HudsonTestCase; @@ -41,13 +40,13 @@ public class DownloadServiceTest extends HudsonTestCase { assertNull(job.getData()); // and now it should work - DownloadSettings.get().setCheckSignature(false); + DownloadService.signatureCheck = false; try { createWebClient().goTo("/self/testPost"); JSONObject d = job.getData(); assertEquals(hashCode(),d.getInt("hello")); } finally { - DownloadSettings.get().setCheckSignature(true); + DownloadService.signatureCheck = true; } // TODO: test with a signature From 6b71faccb95285fb15a72703b2c2e4efdc905512 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Fri, 9 Jan 2015 15:25:41 -0500 Subject: [PATCH 10/25] Reproduced problem in a test. --- .../java/jenkins/model/DownloadSettings.java | 2 +- .../hudson/model/DownloadService2Test.java | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 test/src/test/java/hudson/model/DownloadService2Test.java diff --git a/core/src/main/java/jenkins/model/DownloadSettings.java b/core/src/main/java/jenkins/model/DownloadSettings.java index 0cf410c28b..73b80a4e74 100644 --- a/core/src/main/java/jenkins/model/DownloadSettings.java +++ b/core/src/main/java/jenkins/model/DownloadSettings.java @@ -49,7 +49,7 @@ import org.kohsuke.stapler.StaplerRequest; return Jenkins.getInstance().getInjector().getInstance(DownloadSettings.class); } - private boolean useBrowser = true; // historical default, not necessarily recommended + private boolean useBrowser = false; // TODO switch saved preferences one time, or add an admin monitor, or just delete the option (in which case can also delete DownloadServiceTest and its testPost.jelly) public DownloadSettings() { load(); diff --git a/test/src/test/java/hudson/model/DownloadService2Test.java b/test/src/test/java/hudson/model/DownloadService2Test.java new file mode 100644 index 0000000000..5d35f9c7c3 --- /dev/null +++ b/test/src/test/java/hudson/model/DownloadService2Test.java @@ -0,0 +1,45 @@ +/* + * The MIT License + * + * Copyright 2015 Jesse Glick. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package hudson.model; + +import hudson.util.FormValidation; +import org.junit.Test; +import static org.junit.Assert.*; +import org.junit.Rule; +import org.jvnet.hudson.test.JenkinsRule; + +public class DownloadService2Test { + + @Rule public JenkinsRule r = new JenkinsRule(); + + //@Issue("SECURITY-163") + @Test public void updateNow() throws Exception { + for (DownloadService.Downloadable d : DownloadService.Downloadable.all()) { + FormValidation v = d.updateNow(); + assertEquals(v.toString(), FormValidation.Kind.OK, v.kind); + } + } + +} From 877f4b37ee49e46c6bb6e13536f1f4f53560fa97 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Fri, 5 Dec 2014 11:32:51 -0500 Subject: [PATCH 11/25] Misleading error message. (cherry picked from commit e4c5c7104206536c80379ce18ec640f56b7dba74) --- .../main/java/jenkins/security/DefaultConfidentialStore.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/jenkins/security/DefaultConfidentialStore.java b/core/src/main/java/jenkins/security/DefaultConfidentialStore.java index 88eb84fc1c..989769b32a 100644 --- a/core/src/main/java/jenkins/security/DefaultConfidentialStore.java +++ b/core/src/main/java/jenkins/security/DefaultConfidentialStore.java @@ -106,7 +106,7 @@ public class DefaultConfidentialStore extends ConfidentialStore { byte[] bytes = IOUtils.toByteArray(cis); return verifyMagic(bytes); } catch (GeneralSecurityException e) { - throw new IOException("Failed to persist the key: "+key.getId(),e); + throw new IOException("Failed to load the key: "+key.getId(),e); } finally { IOUtils.closeQuietly(cis); IOUtils.closeQuietly(fis); From 16afb73b254504d0f0f1246e34cce1fb5bd65c35 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Fri, 5 Dec 2014 12:07:50 -0500 Subject: [PATCH 12/25] [FIXED JENKINS-25937] Treat BadPaddingException as an unloadable key and continue. (cherry picked from commit 6318b8d800abdf8b280f4e1b8ce8bf22e49242ad) --- changelog.html | 4 +++- .../java/jenkins/security/DefaultConfidentialStore.java | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/changelog.html b/changelog.html index 585cba089c..4f9927792f 100644 --- a/changelog.html +++ b/changelog.html @@ -55,7 +55,9 @@ Upcoming changes diff --git a/core/src/main/java/jenkins/security/DefaultConfidentialStore.java b/core/src/main/java/jenkins/security/DefaultConfidentialStore.java index 989769b32a..7821f492fd 100644 --- a/core/src/main/java/jenkins/security/DefaultConfidentialStore.java +++ b/core/src/main/java/jenkins/security/DefaultConfidentialStore.java @@ -16,6 +16,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.security.GeneralSecurityException; import java.security.SecureRandom; +import javax.crypto.BadPaddingException; import org.apache.commons.io.IOUtils; /** @@ -107,6 +108,12 @@ public class DefaultConfidentialStore extends ConfidentialStore { return verifyMagic(bytes); } catch (GeneralSecurityException e) { throw new IOException("Failed to load the key: "+key.getId(),e); + } catch (IOException x) { + if (x.getCause() instanceof BadPaddingException) { + return null; // broken somehow + } else { + throw x; + } } finally { IOUtils.closeQuietly(cis); IOUtils.closeQuietly(fis); From cc95634ddf077d0fddc3deaba79d66c48586c2a2 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Fri, 9 Jan 2015 16:18:04 -0500 Subject: [PATCH 13/25] Can get signatures from *.json.html. --- .../java/hudson/model/DownloadService.java | 30 +- .../java/jenkins/model/DownloadSettings.java | 2 +- .../hudson/model/DownloadService2Test.java | 21 +- ...udson.tasks.Maven.MavenInstaller.json.html | 158 + .../model/hudson.tools.JDKInstaller.json.html | 6498 +++++++++++++++++ 5 files changed, 6704 insertions(+), 5 deletions(-) create mode 100644 test/src/test/resources/hudson/model/hudson.tasks.Maven.MavenInstaller.json.html create mode 100644 test/src/test/resources/hudson/model/hudson.tools.JDKInstaller.json.html diff --git a/core/src/main/java/hudson/model/DownloadService.java b/core/src/main/java/hudson/model/DownloadService.java index bedf45db0f..90d6109a48 100644 --- a/core/src/main/java/hudson/model/DownloadService.java +++ b/core/src/main/java/hudson/model/DownloadService.java @@ -171,6 +171,30 @@ public class DownloadService extends PageDecorator { } } + /** + * Loads JSON from a JSON-with-{@code postMessage} URL. + * @param src a URL to a JSON HTML file (typically including {@code id} and {@code version} query parameters) + * @return the embedded JSON text + * @throws IOException if either downloading or processing failed + */ + @Restricted(NoExternalUse.class) + public static String loadJSONHTML(URL src) throws IOException { + InputStream is = ProxyConfiguration.open(src).getInputStream(); + try { + String jsonp = IOUtils.toString(is, "UTF-8"); + String preamble = "window.parent.postMessage(JSON.stringify("; + int start = jsonp.indexOf(preamble); + int end = jsonp.lastIndexOf("),'*');"); + if (start >= 0 && end > start) { + return jsonp.substring(start + preamble.length(), end); + } else { + throw new IOException("Could not find JSON in " + src); + } + } finally { + is.close(); + } + } + /** * Represents a periodically updated JSON data file obtained from a remote URL. * @@ -205,7 +229,7 @@ public class DownloadService extends PageDecorator { public Downloadable() { this.id = getClass().getName().replace('$','.'); - this.url = this.id+".json"; + this.url = this.id + ".json.html"; this.interval = DEFAULT_INTERVAL; } @@ -217,7 +241,7 @@ public class DownloadService extends PageDecorator { } public Downloadable(String id) { - this(id,id+".json"); + this(id, id + ".json.html"); } public Downloadable(String id, String url) { @@ -318,7 +342,7 @@ public class DownloadService extends PageDecorator { @Restricted(NoExternalUse.class) public FormValidation updateNow() throws IOException { - return load(loadJSON(new URL(getUrl() + "?id=" + URLEncoder.encode(getId(), "UTF-8") + "&version=" + URLEncoder.encode(Jenkins.VERSION, "UTF-8"))), System.currentTimeMillis()); + return load(loadJSONHTML(new URL(getUrl() + "?id=" + URLEncoder.encode(getId(), "UTF-8") + "&version=" + URLEncoder.encode(Jenkins.VERSION, "UTF-8"))), System.currentTimeMillis()); } /** diff --git a/core/src/main/java/jenkins/model/DownloadSettings.java b/core/src/main/java/jenkins/model/DownloadSettings.java index 73b80a4e74..ba015ccc92 100644 --- a/core/src/main/java/jenkins/model/DownloadSettings.java +++ b/core/src/main/java/jenkins/model/DownloadSettings.java @@ -49,7 +49,7 @@ import org.kohsuke.stapler.StaplerRequest; return Jenkins.getInstance().getInjector().getInstance(DownloadSettings.class); } - private boolean useBrowser = false; // TODO switch saved preferences one time, or add an admin monitor, or just delete the option (in which case can also delete DownloadServiceTest and its testPost.jelly) + private boolean useBrowser = false; // TODO switch saved preferences one time, or add an admin monitor, or just delete the option (in which case can also delete DownloadServiceTest and its testPost.jelly and its *Installer.json) public DownloadSettings() { load(); diff --git a/test/src/test/java/hudson/model/DownloadService2Test.java b/test/src/test/java/hudson/model/DownloadService2Test.java index 5d35f9c7c3..02f917cb07 100644 --- a/test/src/test/java/hudson/model/DownloadService2Test.java +++ b/test/src/test/java/hudson/model/DownloadService2Test.java @@ -25,16 +25,21 @@ package hudson.model; import hudson.util.FormValidation; +import java.net.URL; +import java.util.Set; +import java.util.TreeSet; +import net.sf.json.JSONObject; import org.junit.Test; import static org.junit.Assert.*; import org.junit.Rule; import org.jvnet.hudson.test.JenkinsRule; +import org.jvnet.hudson.test.WithoutJenkins; +//@Issue("SECURITY-163") public class DownloadService2Test { @Rule public JenkinsRule r = new JenkinsRule(); - //@Issue("SECURITY-163") @Test public void updateNow() throws Exception { for (DownloadService.Downloadable d : DownloadService.Downloadable.all()) { FormValidation v = d.updateNow(); @@ -42,4 +47,18 @@ public class DownloadService2Test { } } + @WithoutJenkins + @Test public void loadJSONHTML() throws Exception { + assertRoots("[list, signature]", "hudson.tasks.Maven.MavenInstaller.json.html"); // format used by most tools + assertRoots("[data, signature, version]", "hudson.tools.JDKInstaller.json.html"); // anomalous format + } + + private static void assertRoots(String expected, String file) throws Exception { + URL resource = DownloadService2Test.class.getResource(file); + assertNotNull(file, resource); + JSONObject json = JSONObject.fromObject(DownloadService.loadJSONHTML(resource)); + @SuppressWarnings("unchecked") Set keySet = json.keySet(); + assertEquals(expected, new TreeSet(keySet).toString()); + } + } diff --git a/test/src/test/resources/hudson/model/hudson.tasks.Maven.MavenInstaller.json.html b/test/src/test/resources/hudson/model/hudson.tasks.Maven.MavenInstaller.json.html new file mode 100644 index 0000000000..18518c13e0 --- /dev/null +++ b/test/src/test/resources/hudson/model/hudson.tasks.Maven.MavenInstaller.json.html @@ -0,0 +1,158 @@ + \ No newline at end of file diff --git a/test/src/test/resources/hudson/model/hudson.tools.JDKInstaller.json.html b/test/src/test/resources/hudson/model/hudson.tools.JDKInstaller.json.html new file mode 100644 index 0000000000..5b315032c5 --- /dev/null +++ b/test/src/test/resources/hudson/model/hudson.tools.JDKInstaller.json.html @@ -0,0 +1,6498 @@ + \ No newline at end of file From 712a223728afa6694146f450a32891e2b6ccfa56 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Fri, 9 Jan 2015 16:48:23 -0500 Subject: [PATCH 14/25] Trim whitespace off JSONP. --- core/src/main/java/hudson/model/DownloadService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/hudson/model/DownloadService.java b/core/src/main/java/hudson/model/DownloadService.java index 90d6109a48..b549c416b0 100644 --- a/core/src/main/java/hudson/model/DownloadService.java +++ b/core/src/main/java/hudson/model/DownloadService.java @@ -186,7 +186,7 @@ public class DownloadService extends PageDecorator { int start = jsonp.indexOf(preamble); int end = jsonp.lastIndexOf("),'*');"); if (start >= 0 && end > start) { - return jsonp.substring(start + preamble.length(), end); + return jsonp.substring(start + preamble.length(), end).trim(); } else { throw new IOException("Could not find JSON in " + src); } From 52cc68808d20266ba85ed7e0b170538c468890c2 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Fri, 9 Jan 2015 16:48:33 -0500 Subject: [PATCH 15/25] Keep comments in the PR. --- core/src/main/java/jenkins/model/DownloadSettings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/jenkins/model/DownloadSettings.java b/core/src/main/java/jenkins/model/DownloadSettings.java index ba015ccc92..577d884892 100644 --- a/core/src/main/java/jenkins/model/DownloadSettings.java +++ b/core/src/main/java/jenkins/model/DownloadSettings.java @@ -49,7 +49,7 @@ import org.kohsuke.stapler.StaplerRequest; return Jenkins.getInstance().getInjector().getInstance(DownloadSettings.class); } - private boolean useBrowser = false; // TODO switch saved preferences one time, or add an admin monitor, or just delete the option (in which case can also delete DownloadServiceTest and its testPost.jelly and its *Installer.json) + private boolean useBrowser = false; public DownloadSettings() { load(); From 03f047d801406f8fd60ac0bc86c12e71ccfe12c5 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Sat, 10 Jan 2015 08:33:02 -0500 Subject: [PATCH 16/25] Test failure. --- test/src/test/java/hudson/model/DownloadServiceTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/src/test/java/hudson/model/DownloadServiceTest.java b/test/src/test/java/hudson/model/DownloadServiceTest.java index 0b01c00c9f..4325702f06 100644 --- a/test/src/test/java/hudson/model/DownloadServiceTest.java +++ b/test/src/test/java/hudson/model/DownloadServiceTest.java @@ -5,6 +5,7 @@ import java.io.IOException; import java.net.URL; import java.util.Set; import java.util.TreeSet; +import jenkins.model.DownloadSettings; import net.sf.json.JSONObject; import org.jvnet.hudson.test.Bug; import org.jvnet.hudson.test.HudsonTestCase; @@ -30,6 +31,7 @@ public class DownloadServiceTest extends HudsonTestCase { // to bypass the URL restriction, we'll trigger downloadService.download ourselves job = new Downloadable("test", "UNUSED"); Downloadable.all().add(job); + DownloadSettings.get().setUseBrowser(true); } @Bug(5536) From 7e7d545588b01a44e5f1edcf766f506138bf25c4 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Mon, 12 Jan 2015 11:16:00 -0500 Subject: [PATCH 17/25] Set up an admin monitor in case of browser-based download. Also moving this switch to security settings. --- .../java/jenkins/model/DownloadSettings.java | 13 +++++++ .../DownloadSettings/Warning/message.jelly | 34 +++++++++++++++++++ .../Warning/message.properties | 26 ++++++++++++++ .../model/DownloadSettings/config.groovy | 7 ++-- .../DownloadSettings/help-useBrowser.html | 8 +++-- 5 files changed, 82 insertions(+), 6 deletions(-) create mode 100644 core/src/main/resources/jenkins/model/DownloadSettings/Warning/message.jelly create mode 100644 core/src/main/resources/jenkins/model/DownloadSettings/Warning/message.properties diff --git a/core/src/main/java/jenkins/model/DownloadSettings.java b/core/src/main/java/jenkins/model/DownloadSettings.java index 577d884892..78999177a0 100644 --- a/core/src/main/java/jenkins/model/DownloadSettings.java +++ b/core/src/main/java/jenkins/model/DownloadSettings.java @@ -25,6 +25,7 @@ package jenkins.model; import hudson.Extension; +import hudson.model.AdministrativeMonitor; import hudson.model.AsyncPeriodicWork; import hudson.model.DownloadService; import hudson.model.TaskListener; @@ -69,6 +70,10 @@ import org.kohsuke.stapler.StaplerRequest; save(); } + @Override public GlobalConfigurationCategory getCategory() { + return GlobalConfigurationCategory.get(GlobalConfigurationCategory.Security.class); + } + @Extension public static final class DailyCheck extends AsyncPeriodicWork { public DailyCheck() { @@ -91,4 +96,12 @@ import org.kohsuke.stapler.StaplerRequest; } + @Extension public static final class Warning extends AdministrativeMonitor { + + @Override public boolean isActivated() { + return DownloadSettings.get().isUseBrowser(); + } + + } + } diff --git a/core/src/main/resources/jenkins/model/DownloadSettings/Warning/message.jelly b/core/src/main/resources/jenkins/model/DownloadSettings/Warning/message.jelly new file mode 100644 index 0000000000..8e1ee79cf8 --- /dev/null +++ b/core/src/main/resources/jenkins/model/DownloadSettings/Warning/message.jelly @@ -0,0 +1,34 @@ + + + + + +
+ + + + +
+
diff --git a/core/src/main/resources/jenkins/model/DownloadSettings/Warning/message.properties b/core/src/main/resources/jenkins/model/DownloadSettings/Warning/message.properties new file mode 100644 index 0000000000..57c6a3b68d --- /dev/null +++ b/core/src/main/resources/jenkins/model/DownloadSettings/Warning/message.properties @@ -0,0 +1,26 @@ +# The MIT License +# +# Copyright 2015 Jesse Glick. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + +blurb=\ + You currently are using browser-based download to retrieve metadata for Jenkins plugins and tools. \ + This has reliability issues and is not considered fully secure. \ + Consider switching to server-based download. diff --git a/core/src/main/resources/jenkins/model/DownloadSettings/config.groovy b/core/src/main/resources/jenkins/model/DownloadSettings/config.groovy index 9c8987f561..6b0751e563 100644 --- a/core/src/main/resources/jenkins/model/DownloadSettings/config.groovy +++ b/core/src/main/resources/jenkins/model/DownloadSettings/config.groovy @@ -2,8 +2,7 @@ package jenkins.security.DownloadSettings def f = namespace(lib.FormTagLib) -f.section(title: _("Download Preferences")) { - f.entry(title: _("Use Browser"), field: "useBrowser") { - f.checkbox() - } +// TODO avoid indentation somehow +f.entry(field: "useBrowser") { + f.checkbox(title: _("Use browser for metadata download")) } diff --git a/core/src/main/resources/jenkins/model/DownloadSettings/help-useBrowser.html b/core/src/main/resources/jenkins/model/DownloadSettings/help-useBrowser.html index 2336961826..b0f50b29fe 100644 --- a/core/src/main/resources/jenkins/model/DownloadSettings/help-useBrowser.html +++ b/core/src/main/resources/jenkins/model/DownloadSettings/help-useBrowser.html @@ -1,6 +1,10 @@ -
+

Check to force the user’s browser to download metadata rather than Jenkins itself doing it. Actual file downloads (plugins, tools) will still happen from Jenkins itself, but this can be used to at least see new metadata when Jenkins cannot access the Internet (but your own browser can, perhaps using some special proxy that Jenkins is not configured to use). -

+

+

+ Use of browser mode is discouraged. + It is not very secure, as malicious users could submit signed but obsolete information, causing denials of service or build errors. +

From 83cf4aa451e0010bbf7f1e7419752df3eb26d7f4 Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Tue, 13 Jan 2015 14:16:09 -0500 Subject: [PATCH 18/25] Need to append .html to .json only in updateNow, not for browser-based checks. --- core/src/main/java/hudson/model/DownloadService.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/hudson/model/DownloadService.java b/core/src/main/java/hudson/model/DownloadService.java index b549c416b0..0d35c01538 100644 --- a/core/src/main/java/hudson/model/DownloadService.java +++ b/core/src/main/java/hudson/model/DownloadService.java @@ -229,7 +229,7 @@ public class DownloadService extends PageDecorator { public Downloadable() { this.id = getClass().getName().replace('$','.'); - this.url = this.id + ".json.html"; + this.url = this.id+".json"; this.interval = DEFAULT_INTERVAL; } @@ -241,7 +241,7 @@ public class DownloadService extends PageDecorator { } public Downloadable(String id) { - this(id, id + ".json.html"); + this(id,id+".json"); } public Downloadable(String id, String url) { @@ -342,7 +342,7 @@ public class DownloadService extends PageDecorator { @Restricted(NoExternalUse.class) public FormValidation updateNow() throws IOException { - return load(loadJSONHTML(new URL(getUrl() + "?id=" + URLEncoder.encode(getId(), "UTF-8") + "&version=" + URLEncoder.encode(Jenkins.VERSION, "UTF-8"))), System.currentTimeMillis()); + return load(loadJSONHTML(new URL(getUrl() + ".html?id=" + URLEncoder.encode(getId(), "UTF-8") + "&version=" + URLEncoder.encode(Jenkins.VERSION, "UTF-8"))), System.currentTimeMillis()); } /** From aa36a5d3dbd778d7086bfcba0c16e4ada99a5b1d Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Tue, 13 Jan 2015 14:19:53 -0500 Subject: [PATCH 19/25] DailyCheck.initialDelay=0 so it runs right after startup if using server-based download. --- core/src/main/java/jenkins/model/DownloadSettings.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/src/main/java/jenkins/model/DownloadSettings.java b/core/src/main/java/jenkins/model/DownloadSettings.java index 78999177a0..a027e4236e 100644 --- a/core/src/main/java/jenkins/model/DownloadSettings.java +++ b/core/src/main/java/jenkins/model/DownloadSettings.java @@ -84,6 +84,10 @@ import org.kohsuke.stapler.StaplerRequest; return DAY; } + @Override public long getInitialDelay() { + return 0; + } + @Override protected void execute(TaskListener listener) throws IOException, InterruptedException { if (get().isUseBrowser()) { return; From fd430a34320e197e6f72baaf21f0ed794b6dc43f Mon Sep 17 00:00:00 2001 From: Jesse Glick Date: Wed, 2 Apr 2014 17:09:18 -0400 Subject: [PATCH 20/25] Do not redirectTestOutputToFile when we are running an individual test (suite or case). In this case we are probably interested in looking at the output as it arrives in real time. Can always be overridden on the command line if desired. (cherry picked from commit 44a8ec110459e560a79c0f11883841bd7095f723) --- test/pom.xml | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/test/pom.xml b/test/pom.xml index 6c2c5291c0..345d20029b 100644 --- a/test/pom.xml +++ b/test/pom.xml @@ -197,7 +197,6 @@ THE SOFTWARE. true ${concurrency} - true @@ -257,6 +256,17 @@ THE SOFTWARE. true + + all-tests + + + !test + + + + true + + - - + +