Recommended Eclipse reading list


New site feature

dW radio -- Listen to our podcasts


Rate this page

Help us improve this content


Level: Introductory

Chris Aniszczyk (zx@us.ibm.com), Software Engineer, IBM

20 Jun 2006

Learn about Eclipse with this reading list compiled for developers by Eclipse developers and enthusiasts at IBM.

Introduction

This list is compiled from a variety of sources and is intended for anyone who wishes to find centralized reading material about Eclipse. One of the biggest challenges new Eclipse users face is where to find the right information for a task. This article provides a small step in solving that problem.

Overview

Eclipse is an open source community with projects focused on providing an extensible development platform and application frameworks for building software. This article provides links to the latest Eclipse versions, books, articles, and Web sites.

What is Eclipse?
Wikipedia provides a great overview of Eclipse and its history.


Back to top


Getting started

If your idea of "Eclipse" is the event when the moon passes between the Earth and Sun or a two-door sports coupe, then this section would be a good start.

Get started now with Eclipse
This developerWorks resource provides answers to many common questions regarding Eclipse. It is part of the developerWorks Eclipse top project resources.
Eclipse Distilled
If you need a broad yet practical introduction to Eclipse, this book by David Carlson is a great start. It covers the basic Eclipse concepts: views, editors, perspectives, debugging, and more.


Back to top


Development

General development

Java Developer's Guide to Eclipse
This book (one of the first about Eclipse) provides a superb introduction to the Eclipse platform from the perspective of a Java™ technology developer. It covers topics ranging from general Java development to plug-in development.
Eclipse IDE Pocket Guide
This guide covers the basics of Eclipse in about 100 pages.

Eclipse development

Eclipse Rich Client Platform: Designing, Coding and Packaging Java Applications
If you want to be building, branding and shipping Eclipse RCP-based applications, this should be your first stop.
Contributing to Eclipse: Principles, Patterns and Plug-ins
Kent Beck and Erich Gamma give a step-by-step tutorial on how to create an RCP-based application.
Eclipse: Building Commercial-Quality Plug-ins
This book covers all you need to know about developing an Eclipse RCP-based product from start to finish.
Official Eclipse FAQs
This Eclipse.org wiki covers common questions and answers regarding Eclipse development. If you ever wondered how to create your own project nature, this is a simple way to get that question answered. Note: It is based on the content found in The Official Eclipse 3.0 FAQs.
Rich Client Tutorial Part 1
This series of tutorials from Eclipse.org covers the basics of RCP development. Part 1 covers the absolute basics of what it means to be an RCP application, Part 2 covers user interface-related elements of RCP-based applications, and Part 3 covers creating a really simple RCP-based application.

Web development

The Eclipse project contains a top-level project known as the Web Tools Platform (WTP) that serves as the base for all Web-related tooling.

Pro Eclipse JST: Plug-ins for J2EE Development
This book covers Eclipse J2EE tooling extensively.
Creating Database Web Applications with Eclipse
This article explains how to create a simple database Web application using Eclipse WTP.
Developing Web Applications with the Eclipse Web Tools Project
This article will teach you how to develop a full-blown Web application using WTP.

Business intelligence

The Eclipse project contains an Eclipse-based reporting system, known as the Business Intelligence and Reporting Tools (BIRT) project, that integrates with your application to produce compelling reports for the Web and PDF. BIRT provides core reporting features like report layout, data access, and scripting.

"Extract database information using Eclipse and BIRT V2.0"
This tutorial discusses using BIRT in the context of designing dynamic reports, charts, and templates.
Integrating and Extending BIRT
Convinced you want to use BIRT in your application? This book can help you integrate and customize BIRT in anything from Web applications to stand-alone rich-client applications.
BIRT: A Field Guide to Reporting
Start here to learn about BIRT and how to use it.

Modeling

The Eclipse project has excellent modeling-related technologies. One is the Eclipse Modeling Framework (EMF). EMF helps you rapidly turn models into efficient, correct, and easily customizable Java code. And the Graphical Modeling Framework (GMF) provides the tooling to generate a fully functional graphical editor from your EMF model (and more).

Eclipse Modeling Framework
This book is the EMF Holy Grail. Start your EMF adventure here.
"Model with the Eclipse Modeling Framework, Part 1"
This series covers various facets of working with EMF. Part 1 discusses how to generate code from your model; Part 2 discusses EMF's code-generation component known as Java Emitter Templates (JET); and Part 3 discusses EMF's code-generation component known as JMerge, which can be used to customize the output of JET templates.
"Discover the Eclipse Modeling Framework (EMF) and its Dynamic Capabilities"
Read this article to learn how to manipulate your EMF model dynamically.
GMF Tutorial, Part 1
This series of tutorials provides a good overview of GMF. Part 1 covers the development of a sample graphical editor from start to finish and Part 2 covers advanced aspects of the GMF generation and runtime frameworks.
Introducing the GMF Runtime
Get an introduction to the runtime that powers all GMF-based editors.

Debugging and profiling

In Eclipse, there is a top-level project known as the Test and Performance Tools Platform (TPTP), which is a universal platform for test and performance tools.

"Introduction: Eclipse Test and Performance Tools Platform"
This tutorial covers the basics of testing and profiling using TPTP.
"Eclipse Test and Performance Tools Platform"
This series of tutorials covers basic usage of TPTP. Part 1 discusses the basics of testing, profiling, and monitoring applications; and Part 2 discusses collecting and analyzing log files.
Java Application Profiling Using TPTP
This article covers an example application of TPTP that involves profiling a Java application.

User interface development

Eclipse is built on top of the Standard Widget Toolkit (SWT), which provides access to the user-interface facilities of the operating systems on which it is implemented (and is responsible for Eclipse's snazzy user interface). Eclipse also has the Graphical Editing Framework (GEF), which is a tool built on top of SWT to allow for the rapid creation of graphical editors. Furthermore, Eclipse has the Visual Editor Project (VEP), which serves as a framework to create GUI builders.

SWT: The Standard Widget Toolkit, Volume 1
This book covers SWT really well and is written by SWT committers.
SWT: A Developer's Notebook
Read this for a concise guide to SWT with concrete examples (hardly any fluff).
SWT/JFace in Action
This book gives a great overview of SWT and JFace. As a bonus, there is excellent section about GEF in the appendix.
Creating JFace Wizards
Learn about implementing wizards and contributing them to the Eclipse workbench.
Eclipse Forms: Rich UI for the Rich Client
Find out about Eclipse Forms, which is a thin graphics toolkit implemented on top of SWT.
Using OpenGL with SWT
Find out how to use OpenGL in your SWT applications.
Extending The Visual Editor: Enabling support for a custom widget
Read this to find out how to extend the Visual Editor project to support a custom widget.
"Create an Eclipse game plug-in"
This series of tutorials goes in-depth in explaining how to create a game using Eclipse. Part 1 covers the basics of Eclipse and SWT, Part 2 covers more advanced aspects of SWT/OpenGL to bring your game to life, and Part 3 covers adding more physics to your game (such as collision detection).
"A gentle introduction to SWT and JFace"
Read through this series of articles to learn how to create simple Standard Widget Toolkit (SWT) applications using Java technology, Eclipse, and the SWT and JFace libraries.


Back to top


Community

Mailing lists

Eclipse mailing lists
Mailing lists are a good source of information regarding subject-specific needs. Note: Mailing lists are primarily used by Eclipse committers, and it is recommended to use the Eclipse newsgroups to post questions.

Newsgroups

Eclipse newsgroups
This is the most useful resource for Eclipse questions. It contains a veritable tome of information that should be searched by every Eclipse developer.

Wiki

Official Eclipse wiki
The Eclipse wiki contains information about projects posted by Eclipse committers.
Unofficial Eclipse wiki
The unofficial Eclipse wiki contains useful information written by the Eclipse community.

News

Planet Eclipse
Planet Eclipse is a window into the world, work, and lives of Eclipse hackers and contributors.
EclipseZone
This is an active site that contains up-to-date information regarding Eclipse happenings.

Blogs

Chris Aniszczyk
Chris Aniszczyk is a committer on a few Eclipse projects -- and is the author of this article.
Wayne Beaton
Wayne Beaton is the Eclipse Foundation's Eclipse evangelist.
Bjorn Freeman-Benson and Ward Cunningham
Bjorn Freeman-Benson and Ward Cunningham are Eclipse Foundation employees that blog about open-source development Eclipse issues.
John Graham
John Graham is the PMC chair for the Eclipse Data Tools Platform (DTP) project.
Kim Horne
Kim Horne is an Eclipse committer on the Eclipse Platform.
Wassim Melhem
Wassim Melhem is the lead of the Plug-in Development Environment (PDE) project.
Mike Milinkovich
Mike Milinkovich is the executive director of the Eclipse Foundation.
Doug Schaefer
Doug Schaefer is the lead of Eclipse's C/C++ Tools project (CDT).
Michael Scharf
Michael Scharf is a member of the Eclipse architecture council.
Ian Skerrett
Ian Skerrett is director of marketing at the Eclipse Foundation.
Tim Wagner
Tim Wagner leads the Web Tools Platform (WTP) project at Eclipse.

Chat

IRC
IRC is a great tool to get instant help from the Eclipse community.


Back to top


Other resources

User groups

bostonEDGE Eclipse Developer's Group
Live in Boston? Want to find other like-minded Eclipse people? Check out this group.

Magazines

Eclipse Review
This is a quarterly magazine for IT professionals, including software developers, who use Eclipse-based tools and technologies.
Eclipse Magazin
Eclipse Magazin is a German Eclipse magazine.


Back to top




Back to top


About the author

Chris Aniszczyk is a software engineer at IBM Lotus and a graduate of IBM's Extreme Blue internship program. He is an open source enthusiast at heart, and he works on the Gentoo Linux (http://www.gentoo.org) distribution and is a committer on the Eclipse Modeling Framework Technology (EMFT) project.




Back to top
build.gradle:plugins { id 'eclipse' id 'idea' id 'maven-publish' id 'net.minecraftforge.gradle' version '[6.0.36,6.2)' } version = mod_version group = mod_group_id base { archivesName = mod_id } // Mojang ships Java 21 to end users in 1.20.5+, so your mod should target Java 21. java.toolchain.languageVersion = JavaLanguageVersion.of(21) println "Java: ${System.getProperty 'java.version'}, JVM: ${System.getProperty 'java.vm.version'} (${System.getProperty 'java.vendor'}), Arch: ${System.getProperty 'os.arch'}" minecraft { // The mappings can be changed at any time and must be in the following format. // Channel: Version: // official MCVersion Official field/method names from Mojang mapping files // parchment YYYY.MM.DD-MCVersion Open community-sourced parameter names and javadocs layered on top of official // // Parchment is an unofficial project maintained by ParchmentMC, separate from MinecraftForge // Additional setup is needed to use their mappings: https://parchmentmc.org/docs/getting-started // // Simply re-run your setup task after changing the mappings to update your workspace. mappings channel: mapping_channel, version: mapping_version // Forge 1.20.6 and newer use official mappings at runtime, so we shouldn't reobf from official to SRG reobf = false // When true, this property will have all Eclipse/IntelliJ IDEA run configurations run the "prepareX" task for the given run configuration before launching the game. // In most cases, it is not necessary to enable. // enableEclipsePrepareRuns = true // enableIdeaPrepareRuns = true // This property allows configuring Gradle's ProcessResources task(s) to run on IDE output locations before launching the game. // It is REQUIRED to be set to true for this template to function. // See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html copyIdeResources = true // When true, this property will add the folder name of all declared run configurations to generated IDE run configurations. // The folder name can be set on a run configuration using the "folderName" property. // By default, the folder name of a run configuration is the name of the Gradle project containing it. // generateRunFolders = true // This property enables access transformers for use in development, applied to the Minecraft artifact. // The access transformer file can be anywhere in the project. // However, it must be at "META-INF/accesstransformer.cfg" in the final mod jar to be loaded by Forge. // This default location is a best practice to automatically put the file in the right place in the final jar. // See https://docs.minecraftforge.net/en/latest/advanced/accesstransformers/ for more information. // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') // Default run configurations. // These can be tweaked, removed, or duplicated as needed. runs { // applies to all the run configs below configureEach { workingDirectory project.file('run') // Optional additional logging. The markers can be added/remove as needed, separated by commas. // "SCAN": For mods scan. // "REGISTRIES": For firing of registry events. // "REGISTRYDUMP": For getting the contents of all registries. // property 'forge.logging.markers', 'REGISTRIES' property 'forge.logging.console.level', 'debug' // Recommended for development - enables more descriptive errors at the cost of slower startup and registration. property 'eventbus.api.strictRuntimeChecks', 'true' // arg "-mixin.config=${mod_id}.mixins.json" } client { // Comma-separated list of namespaces to load gametests from. Empty = all namespaces. property 'forge.enabledGameTestNamespaces', mod_id } server { property 'forge.enabledGameTestNamespaces', mod_id args '--nogui' } // This run config launches GameTestServer and runs all registered gametests, then exits. // By default, the server will crash when no gametests are provided. // The gametest system is also enabled by default for other run configs under the /test command. gameTestServer { property 'forge.enabledGameTestNamespaces', mod_id } data { // example of overriding the workingDirectory set in configureEach above workingDirectory project.file('run-data') // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. args '--mod', mod_id, '--all', '--output', file('src/generated/resources/'), '--existing', file('src/main/resources/') } } } // Include resources generated by data generators. sourceSets.main.resources { srcDir 'src/generated/resources' } repositories { // Put repositories for dependencies here mavenCentral() maven { name = 'Forge' url = 'https://maven.minecraftforge.net' } maven { name = 'Minecraft libraries' url = 'https://libraries.minecraft.net' } exclusiveContent { forRepository { maven { name = 'Sponge' url = 'https://repo.spongepowered.org/repository/maven-public' } } filter { includeGroupAndSubgroups('org.spongepowered') } } // If you have mod jar dependencies in ./libs, you can declare them as a repository like so. // See https://docs.gradle.org/current/userguide/declaring_repositories.html#sub:flat_dir_resolver // flatDir { // dir 'libs' // } } dependencies { // Specify the version of Minecraft to use. // Any artifact can be supplied so long as it has a "userdev" classifier artifact and is a compatible patcher artifact. // The "userdev" classifier will be requested and setup by ForgeGradle. // If the group id is "net.minecraft" and the artifact id is one of ["client", "server", "joined"], // then special handling is done to allow a setup of a vanilla dependency without the use of an external repository. minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" // Forge 1.21.6+ uses EventBus 7, which shifts most of its runtime validation to compile-time via an annotation processor // to improve performance in production environments. This line is required to enable said compile-time validation // in your development environment, helping you catch issues early. annotationProcessor 'net.minecraftforge:eventbus-validator:7.0-beta.10' // Example mod dependency with JEI // The JEI API is declared for compile time use, while the full JEI artifact is used at runtime // compileOnly "mezz.jei:jei-${mc_version}-common-api:${jei_version}" // compileOnly "mezz.jei:jei-${mc_version}-forge-api:${jei_version}" // runtimeOnly "mezz.jei:jei-${mc_version}-forge:${jei_version}" // Example mod dependency using a mod jar from ./libs with a flat dir repository // This maps to ./libs/coolmod-${mc_version}-${coolmod_version}.jar // The group id is ignored when searching -- in this case, it is "blank" // implementation fg.deobf("blank:coolmod-${mc_version}:${coolmod_version}") // For more info: // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/dependency_management.html } // This block of code expands all declared replace properties in the specified resource targets. // A missing property will result in an error. Properties are expanded using ${} Groovy notation. // When "copyIdeResources" is enabled, this will also run before the game launches in IDE environments. // See https://docs.gradle.org/current/dsl/org.gradle.language.jvm.tasks.ProcessResources.html tasks.named('processResources', ProcessResources) { var replaceProperties = [ minecraft_version: minecraft_version, minecraft_version_range: minecraft_version_range, forge_version: forge_version, forge_version_range: forge_version_range, loader_version_range: loader_version_range, mod_id: mod_id, mod_name: mod_name, mod_license: mod_license, mod_version: mod_version, mod_authors: mod_authors, mod_description: mod_description, ] inputs.properties replaceProperties filesMatching(['META-INF/mods.toml', 'pack.mcmeta']) { expand replaceProperties + [project: project] } } // Example for how to get properties into the manifest for reading at runtime. tasks.named('jar', Jar) { manifest { attributes([ 'Specification-Title' : mod_id, 'Specification-Vendor' : mod_authors, 'Specification-Version' : '1', // We are version 1 of ourselves 'Implementation-Title' : project.name, 'Implementation-Version' : project.jar.archiveVersion, 'Implementation-Vendor' : mod_authors ]) // attributes['MixinConfigs'] = "${mod_id}.mixins.json" } } // Example configuration to allow publishing using the maven-publish plugin publishing { publications { register('mavenJava', MavenPublication) { artifact jar } } repositories { maven { url ="file://${project.projectDir}/mcmodsrepo" } } } tasks.withType(JavaCompile).configureEach { options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation } // IntelliJ no longer downloads javadocs and sources by default, this tells Gradle to force IntelliJ to do it. idea.module { downloadJavadoc = downloadSources = true } eclipse { // Run everytime eclipse builds the code //autoBuildTasks genEclipseRuns // Run when importing the project synchronizationTasks 'genEclipseRuns' } // Merge the resources and classes into the same directory, because Java expects modules to be in a single directory. // And if we have it in multiple we have to do performance intensive hacks like having the UnionFileSystem // This will eventually be migrated to ForgeGradle so modders don't need to manually do it. But that is later. sourceSets.each { def dir = layout.buildDirectory.dir("sourcesSets/$it.name") it.output.resourcesDir = dir it.java.destinationDirectory = dir }
08-24
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值