這是歷史版本頁面 — 看 NetBeans IDE 最新版本

Java 開發用哪套 IDE?NetBeans 能做什麼

NetBeans IDE 軟體圖示 NetBeans IDE 13.0 資料更新 2022-03-06 閱讀約 7 分鐘

寫 Java 程式寫到一個階段,會開始覺得記事本或陽春編輯器不夠用。專案一多,檔案散在好幾個資料夾,改一個變數要手動找所有用到的地方,編譯錯誤只能靠眼睛慢慢抓,更別說要拉一個視窗介面,光排版就耗掉半天。你真正需要的,是一套能把編輯、編譯、除錯、專案管理全部兜在一起的工具,讓寫程式這件事不再卡在這些雜務上。

一般人習慣的做法,是開一個純文字編輯器,再開命令提示字元手動下指令編譯。這樣不是不行,但專案一大,光記指令和找檔案就夠累,而且沒有語法檢查,打錯字要等編譯失敗才知道。這類整合開發環境(IDE)的切入點,就是把這些流程整合進同一個視窗:寫程式時即時標出語法錯誤,按一下就能編譯執行,專案檔案自動分類管理,甚至連版本控制都內建好,省去切換軟體的麻煩。

NetBeans IDE 操作介面
NetBeans IDE 的操作介面

01NetBeans 除了寫 Java,還能拿來寫哪些語言?

官方說明指出,它主要用於 Java 應用程式開發,但也支援 PHP、HTML5 和 C/C++。也就是說,如果你同時碰 Java 和 PHP,或需要寫一點 C/C++,可以都在同一套軟體裡處理,不用為了不同語言裝好幾套編輯器。不過每種語言的支援深度可能不同,實際用起來順不順手,建議自己裝起來試寫一小段程式看看。

02它跟一般文字編輯器差在哪?為什麼要用 IDE 寫程式?

文字編輯器只負責打字,IDE 額外提供語法標示、程式碼自動補全、錯誤即時提示、重構工具、專案管理、版本控制整合、除錯和效能分析等功能。以 NetBeans 來說,它會同時標示語法和語意上的問題,寫錯的地方當下就看得到,不用等編譯。重構功能也幫你安全地改程式碼結構,改一個方法名稱,所有呼叫的地方會一起更新。

03它的圖形介面設計工具是怎麼用的?可以拉元件做視窗嗎?

可以。NetBeans 內建 GUI Builder,支援 Java Swing 和 JavaFX 應用程式,用拖曳的方式把按鈕、文字欄位等元件放到視窗上,再調整版面配置,不用手寫一堆排版程式碼。這對不熟悉 Swing 或 JavaFX 版面管理的人來說,可以省下不少摸索時間。不過拖曳產生的程式碼結構,如果你習慣完全掌控每一行程式,可能需要一段時間適應。

NetBeans IDE 介面畫面 2
NetBeans IDE 介面畫面

04它能不能管 Git 版控?還是要另外裝軟體?

內建就有。官方說明提到它整合了 Git、Subversion 和 Mercurial 三種版本控制系統,可以直接在 IDE 裡做 commit、update 和其他版控操作,不用另外開命令列或裝圖形化版控軟體。這對一個人開發或小團隊協作都夠用,開個專案就能看到哪些檔案改過、跟遠端同步,流程都在同一個視窗完成。

05外掛要怎麼裝?裝了能做什麼?

從「Tools」選單進「Plugins」就能開啟外掛管理員,可以安裝、更新或移除外掛。官方說明指出它有一個豐富的外掛生態系,可以依自己的開發需求擴充功能,例如加裝不同語言的支援、程式碼格式化工具或主題配色等。安裝時可以只挑需要的裝,不用一次全裝,保持 IDE 輕量。具體有哪些外掛可用,打開管理員瀏覽一下就知道。

06剛開始學 Java 的人用這套會不會太難?

官方說明提到它對初學者可能有一條比較陡的學習曲線,但同時也提供專案精靈和範本,開新專案時照著步驟選類型、設定名稱就能開始寫。如果你完全沒用過 IDE,一開始要熟悉介面配置和專案結構需要一點時間,但它的介面算是有條理,選單、工具列、視窗配置都清楚。建議先從開新專案、寫 Hello World、按 Run 執行這條路徑開始,慢慢摸熟其他功能。

NetBeans IDE 介面畫面 3
NetBeans IDE 介面畫面

07學生或個人開發者用這套要付錢嗎?

不用。NetBeans 是 Apache 基金會底下的開源軟體,官方說明明確表示完全免費、沒有授權費用,也沒有功能限制,安裝後就是完整功能。對學生、個人開發者或預算有限的組織來說,這點是它的一大優勢。你不需要為了省錢去找破解版或閹割版,直接從官方網站下載安裝就能用。

08它跟 Eclipse 比起來,哪個比較適合初學者?

官方資料沒有直接比較兩者,但可以從幾個面向自己判斷。NetBeans 的預設介面比較整齊,專案精靈和範本齊全,開新專案的路徑很直覺;Eclipse 的彈性較大,但初期設定和觀念比較抽象。兩者都是免費開源、都有龐大外掛生態。建議都裝來試寫一個小專案,看哪一套的介面和操作邏輯你比較順手,這比看任何評測都準。

09我已經在用 IntelliJ IDEA 了,還需要換成這套嗎?

官方資料沒有提供兩者的功能比較,無法直接回答哪個比較好。如果你目前用 IntelliJ IDEA 用得順手,沒有什麼困擾,就沒有必要換。NetBeans 的定位是免費開源的 Java IDE,而 IntelliJ IDEA 是商業軟體,但官方資料也提到它有免費的 Community Edition。如果你只是好奇或想找免費替代方案,可以裝來試試,但如果你對現狀滿意,換工具反而要重新適應。

NetBeans IDE 介面畫面 4
NetBeans IDE 介面畫面

10它的介面只有英文,看不懂英文的人是不是不適合?

官方資料顯示介面語系只有 English,沒有中文介面。如果你對英文介面不熟悉,選單和設定項目可能會需要一段時間適應。不過 IDE 的操作邏輯大同小異,常用功能的位置和圖示都算直覺,加上網路上有不少中文教學文章可以對照,門檻沒有想像中高。如果你完全無法接受英文介面,可能就要考慮其他有中文語系的 IDE。

11電腦只有 2GB 記憶體,跑得動嗎?

官方列出的系統需求是 2GB 記憶體最低、建議 4GB,處理器 1.5GHz 以上,硬碟空間 1.5GB。也就是說 2GB 是勉強可以跑的最低門檻,但同時開 IDE 加瀏覽器或其他軟體,可能會明顯感到卡頓。官方說明也提到它啟動速度比某些 IDE 慢,這在記憶體不足的機器上會更明顯。如果你的電腦規格低於這個門檻,建議先升級硬體,或考慮用更輕量的編輯器。

12我主要是寫 Python 或 JavaScript,這套適合嗎?

官方說明列出的支援語言是 Java、PHP、HTML5 和 C/C++,沒有提到 Python 或 JavaScript 的專門支援。雖然透過外掛可能可以擴充,但官方資料沒有提供這方面的資訊,無法確認效果。如果你主要寫 Python 或 JavaScript,市場上有其他更專門的編輯器或 IDE 可以考慮,NetBeans 的強項還是在 Java 這條主線上,建議先確認外掛生態有沒有你要的語言支援再決定。

下載與官方連結

前往官方網站 下載 NetBeans IDE

Apache-NetBeans-13-bin-windows-x64.exe · 連結指向軟體原廠

版本紀錄

再看 5 筆

看完整版本清單

這一版改了什麼

What's new in this version:

Highlights:
- Bundled nb-javac, startup experience simpler and smoother
- Light FlatLaf look and feel by default
- Partial upgrades for Maven, Gradle, and PHP
- Note: The full list of pull requests integrated in the 13 timeframe is found here, while they are listed by category below

Java:
- fixed wrong nb-javac module name so that it can be installed.
- [#3511] workaround for extends/implements panel not showing any results.
- [jackpot] DefaultRuleUtilities::referencedIn fix for single variable matching
- [#3494] Organize Imports inspection is not record aware.
- Hint/Inspection panel and dialog layout fixes
- [#3466] do not show Convert Type to Var hint for method references
-  remove findbugs installer module.
- [jackpot] Add sourceVersion(int) to rule file utils and deprecate enum variant. (part 2)
- nb-javac checks cleanup and dialog removal.
- [jackpot] Add sourceVersion(int) to rule file utils and deprecate enum variant.
- javac wrapper module should clean its "external" folder.
- VaniallaPartialReparser reports incorrectly reparsed files
- [jackpot] added generics aware rule to IteratorToFor inspection
- Handle any script’s URI and provide script content when not readable from file.
- Including nb-javac binaries in all the complementary distributions
- fixed class modifier auto completion for sealed classes.
- [jackpot] Rewrite "String::replaceAll with dot" inspection to apply to more cases and methods
- Dynamically switching from all-file processing to single-file processing of multi file JavaSources. [2959]
-  fix refactoring of class member when a new name is the same as the name of a local variable [2612]

Maven:
- #3526: Retain traling / for non-existing directories.
- NETBEANS-6347: Disabled user actions fixed
- Formatted the templates to be inline with the default java formatting.
- Upgrade to Apache Maven 3.8.4
- m2 URL components need to be URL decoded before being used to create the artifact
- Maven pom.xml annotations: Configure graphics context for antialiasing
-  Maven project template uses template for project structure.
- maven daemon support

Gradle:
- [#3590] Prevent suspicious NPE forn Gradle SubProjectsNode
-  Fix Gradle project loading in template operations.
- Rewrite lambda to an inner class to prevent from Gradle warning about execution optimizations.
- NETBEANS-6307: check global artifact cache, ignore per-project cached structure if not consistent.
- Fixed typo: runSingle presence depends on runClassName property.
- Fixed some lost-in-translation issues with Gradle Tooling
- Use Gradle distribution service and public repo for their binaries.
-  Give info when the IDE’s Java is not compatible with Gradle
-  Testcase checking Gradle ProjectInfo never return null
-  Minimal support of java-platfom Gradle projects.

Groovy:
-  Code completion for class fields doesn’t work.
-  Navigation to fields sometimes doesn’t work in Groovy
- Avoid spurious exception in log. Warn if perf counters are enabled on incompatible JDK
-  Groovy CC doesn’t work on JDK 1.8
-  Posibility to run single Groovy Script
-  An infinite loop may occur when parsing Groovy sources
-  Package code completion doesn’t work in empty groovy …

PHP:
-  Fix an issue the stop command is not sent
- Fix code completion for parent’s trait #3486
- Regenerate sigfiles
-  PHP 8.1 Support
-  PHP 8.1 Support: Pure intersection types
-  PHP 8.1 Support: New in initializers
-  Escape HTML entities in PHPStan report
-  PHP 8.1 Support: Readonly Properties 2.0
-  Add PHPStan rule level 9
-  PHP 8.1 Support: Never type
-  PHP 8.1 Support: Final class constants part
-  Mark overriding/overridden constants and properties as annotations
-  Allow Convert Visibility Suggestion to be disabled
-  PHP 8.0: Fix syntax errors for attributes of interface constants and methods
-  Show inherited members on the navigator pane

CSS:
- [#3593] Fix csl elementhandle
- CSS Parser Fixes
- Exclude less (@{}) and scss (#{}) string interpolation from formatting

LSP:
- Support to redefine icons for LSP client
- LSP: Change method parameters should refactor access modifier.
- LSP: Modified to fix errors currently printed to log from ServerTest.
- Convert source path to URI String.
- LSP: Do not refactor library classes.
- LSP: Fixed broken code completion for super constructor call.
- LSP console IO is made more reliable, output is not lost now.
- LSP: Do not produce CodeActions for errors with empty description.
- VSCode: Show Debug Console while running tests.
- LSP: Never remove imports on save when the code isn’t bug free.
- Disable client-side projects and nodejs support.
- Various fixes of project / folder actions presence in vscode
- LSP: Couple of Text Explorer fixes.
- Maintain data identity for duplicit info requests
- LSP: Provide completion for SQL queries for repository annotations.
- LSP: Allow to specify default DB connection
- Added more actions to LSP Projects View
- Adding command for New Database Connection
- LSP: attempt to speed up open type action.
- Bridged node actions to LSP commands. Enabled DB explorer view for LSP clients.
- Dispose/disconnect tree view after client stop.
- Micronaut Data Finder completion check for @Repository annotation fixed.
- Check for nativeImagePath property.
- Micronaut data finder methods code completion
- Enable node-based UIs in LSP
- LSP: Organize imports action added.
- Allow VSCode users to choose 'local' - e.g. per workspace userdir
- Shade whole methods which are not included in the native image.
- LSP: Enrich Java Outline view by more details.
- Gson library upgraded to 2.8.9, LSP upgraded to 3.16
-  Disable running LSP servers for VCS diffs. [2876]
- First version of semantic highlight support for both the LSP client and Java LSP server. [2617]

Editor:
-  Assure that TokenHierarchy is called with Document’s read lock.
-  Document switcher popup not grouping by project on first use.
- VSCode:
- Be able to resolve project problems in VSCode extension.
- Delay change events for node after the node’s pending queries are resolved
- Run Configuration UI for the Explorer view
- Really convert IDs to numbers to use with Map. Re-fetch items that have been marked as changed.
- Show Databases and Projects views only after NBLS extension activates.
- Merge the code lens actions with the launch config properties and adapt Gradle to apply env.
- LSP + VSCode extension: Run/Debug via project actions.
- Rich HTML UI for (now only for) VSCode Refactorings
- Misc:
- build.xml and run.xml: fixed detection of 64 bit architecture for Java 9+ (on Windows)
- Exposing simple UI action to open next segment of a heap dump
- Making build information a bit more up to date
-  Detect another Java support ext and recommend to Disable one.
- Micronaut project creation fix
- New From Template creates an invalid HTML page
- Update FlatLaf from 2.0 to 2.0.1
- Update README with JDK 11 requirement.
- Cache netbeanrelease.json for offline builds and source releases.
- Change maven 384 dependencies to codehaus groupID
- Fixes to LSP client/server related to semantic highlighting.
- Ensure BufferedInputStream is not initialized with a buffer size of 0
-  Fix Gradle popup menu Tasks.. action not working.
- search/replace dialog: set shift+enter as line break and add multi-line info message.
- javafx ide.ergonomics config should not try to load the old nb-javac.
- Update year in NOTICE to 2022
-  - Upgrade Metro from 2.4.4 to 2.4.8
- Honor MxLibrary.path() if specified
- Better report of failures, append stderr/out.
- LSP: Change method parameters should refactor access modifier. (#3442)
- Update FlatLaf from 1.6.1 to 2.0
- Use boolean flag to create apidoc menu
- Simplified cancelHandle test.
- Disable database features in vscode
- Always call mx build before running the java.mx.projects tests
- [cnd] 2.2 - cnd and cpplite integration fixes
- Avoid using word failed in non-fatal debug messages
- [cnd] small-2.1 Merging from master
- Modified to prevent IllegalStateExceptions from CasualDiff.
- dlight.nativeexecution test documentation
- [cnd] small-1.5 More cnd tests
-  Shield against usage of JDK-11 API.
- Native image breakpoints work with shared libraries.
- [cnd] small-1.4 makeproject samples, editor/lexer tests
- Initial port and adapt of GitHub issue configuration from Airflow.
- disabled uihandler modules (exception+statistics reporter).
- [CND] small-1.3 Remaining licences in cnd cluster
- Fix cluster splitting of RAT errors
- print simple junit report on travis job failure.
- [cnd] small-1.2: cnd.editor/cnd.remote/licenses
- Add binaries.repos property to downloadbinaries call in projectized.xml.
- [cnd] small-1.1: Moving some cnd modules to contrib
- Follow LSP specification for null value for startCharacter in FoldingRange
- Allow searching for multi-line Strings.
- Updated Subversion support to 1.14.0
-  - remove annotation warnings related to deprecating
- Fix html.angular, js2.editor, js2.nodejs and js2.requirejs tests
- Clean merge of "Fixing the configure hint sub-fix to work more properly for per-project hint settings."
- Fix javascript2.editor tests and reenable testing in travis
-  avoid IllegalArgumentException in FoldManagerImpl
- Change nb.sass.libsass to TRUE, to fix broken SASS
- Remove obsolete permgen flags.
- Single file Groovy Run and Debug in VSCode.
- Using HTML based UI for Change method parameters refactoring
- Updating HTML/Java API to 1.7.3 version
- Use ToolProvider from libs.javacapi, not from bootclasspath
- Adding support for Oracle Cloud
- Deactivate broken xmlretriever test (client cert expired and a new one is not yet issued)
- Remove jruby related YAML parser libs
-  Build of vscode extension fails
- Small improvement on GitBranchHash which is able to get at least the hash of a detached HEAD
- Switch to FlatLaf Light as default look and feel for IDE
- Handle invalid package.json only containing a single string
- Consider the reported trustlevel of the KeyStoreProvider when querying KeyStores
- An attempt to fix unstable test for java.mx.projects
- Splitting workflows into individual files
- Build Java cluster on JDK17
- NETBEANS-3042 Fixes Payara Server log formatting issue
- Don’t search for parent folders when there is .mxignore file
- NETBEANS-3270 Webapp not correctly recognized as Java EE
- Fixes creation of a Glassfish deployment descriptor
- Allow plugins to exclude files from being indexed
- Update to nb-javac identical to javac from jdk-17+35
- Remove JARs fom repository to simplify release review
-  Pattern Matching for Switch hints (preview)
- Fixing the configure hint sub-fix to work more properly for per-project hint settings.
-  Handling of FileObjects not backed by j.i.File when sorting by full path is requested.
- Updates for Sql autocomplete and  Create a SQL Standard Quoter for Use with Connectionless Cases
- Replacing manually built javac with Maven one [2783]
- Options panel use GTK default colors