// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= NetBeans IDE 7.4 中的 JDK 8 支持视频
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans IDE 7.4 中的 JDK 8 支持视频 - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans IDE 7.4 中的 JDK 8 支持视频

|===
|此截屏视频演示了如何在 NetBeans IDE 中开始使用 JDK 8 以及如何使用 JDK 8 配置文件和 lambda 表达式。

link:http://bits.netbeans.org/media/jdk8-gettingstarted.mp4[+下载/观看全图+] (30 MB)

 

|
link:/about/contact_form.html?to=3&subject=Feedback: Getting Started with JDK 8 Support in NetBeans IDE 7.4[+发送有关此教程的反馈意见+] 
|===


== 相关链接

* link:http://openjdk.java.net/projects/jdk8/[+JDK 8 项目页+]
* link:https://netbeans.org/kb/docs/java/javase-jdk8.html[+NetBeans IDE 中的 JDK 8 支持概述+]
* link:https://netbeans.org/features/java/index.html[+NetBeans 功能页：Java+]
* link:https://netbeans.org/kb/trails/java-se.html[+常规 Java 开发 NetBeans 学习资源+]
* link:http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html[+Java 教程：Lambda 表达式+]
* link:http://apex.oracle.com/pls/apex/f?p=44785:24:114639602012411::::P24_CONTENT_ID,P24_PREV_PAGE:7919,24[+Oracle 学习库：Java SE 8 Lambda 系列+]
