mirror of
https://github.com/tiennm99/lombok.git
synced 2026-05-28 10:23:55 +00:00
115 lines
5.9 KiB
HTML
115 lines
5.9 KiB
HTML
<!DOCTYPE html>
|
|
<html><head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<script src="logi/jQuery-all.js" type="text/javascript"></script>
|
|
<script src="index.js" type="text/javascript"></script>
|
|
<link rel="stylesheet" type="text/css" href="logi/reset.css" />
|
|
<link rel="stylesheet" type="text/css" href="index.css" />
|
|
<link rel="stylesheet" type="text/css" href="slideshow/slideshow.css" />
|
|
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon" />
|
|
<meta name="description" content="Spice up your java" />
|
|
<title>Project Lombok</title>
|
|
<!--[if lt IE 7]><script type="text/javascript" src="logi/iepngfix_tilebg.js"></script><![endif]-->
|
|
</head><body>
|
|
<a id="forkMe" href="http://github.com/rzwitserloot/lombok"><img style="position: absolute; top: 0; right: 0; border: 0;" src="http://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub" /></a>
|
|
<div class="meat">
|
|
<h1>Project Lombok</h1>
|
|
<div id="downloadInfo" class="buttonBar" style="display: none;">
|
|
<span></span>
|
|
<div class="downloadActions">
|
|
<a class="backToBar" href="http://projectlombok.googlecode.com/files/lombok.jar">Okay, download <strong>lombok</strong></a> | <a href="mavenrepo/index.html">I use maven</a><br />
|
|
<a href="#" class="backToBar">Cancel</a>
|
|
</div>
|
|
</div>
|
|
<div id="buttonBar" class="buttonBar">
|
|
<a class="button" href="features/index.html">
|
|
<img src="icon_overview.png" />
|
|
<span>Feature Overview</span>
|
|
</a>
|
|
<a class="button" href="http://groups.google.com/group/project-lombok">
|
|
<img src="icon_discussion.png" />
|
|
<span>Discuss / Help</span>
|
|
</a>
|
|
<a class="button" href="http://wiki.github.com/rzwitserloot/lombok/contributing">
|
|
<img src="icon_contribute.png" />
|
|
<span>Contribute</span>
|
|
</a>
|
|
<a class="button" href="http://code.google.com/p/projectlombok/issues/list">
|
|
<img src="icon_bugs.png" />
|
|
<span>Report an issue</span>
|
|
</a>
|
|
<div class="downloadContainer">
|
|
<a class="downloadLink" id="downloadLink" href="download.html">
|
|
<img src="icon_download.png" />
|
|
<span>Download!</span>
|
|
</a>
|
|
<div class="versionInfo">
|
|
Version: @VERSION@ | <a href="changelog.html">changelog</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="slideshow">
|
|
<div class="para">
|
|
Imagine you have a very simple class:
|
|
</div><div class="snippet">public class Mountain {
|
|
private final String name;
|
|
private final double latitude, longitude;
|
|
private String country;
|
|
}</div>
|
|
<p>
|
|
While that is fairly clear, that class is not complete. In fact, it won't compile like that.<br />
|
|
You'll need to add a constructor to initialize those final fields, you probably want getters, a setter for <code>country</code>,
|
|
and to be complete, a nice <code>toString</code> as well as an implementation for <code>equals</code> and <code>hashCode</code>.
|
|
Eclipse can generate all these methods for you, but then you end up with over 70 lines of boilerplate. It's going to be hard
|
|
to see any surprises buried amongst all those lines of code! Lombok has the answer to this problem.
|
|
</p><p>
|
|
So instead of this mess:
|
|
<img class="screenshot" src="slideshow/eclipse-generate.png" />
|
|
lombok simply offers you an annotation that tells eclipse to generate all this stuff for us silently, without
|
|
cluttering up your source file, like so:
|
|
<img class="screenshot" src="slideshow/eclipse-lombok.png" />
|
|
</p><p>
|
|
Note how we haven't even saved the file yet, but in the outline view you can already see all the various methods generated
|
|
by the <code>@Data</code> annotation. That's because lombok is completely integrated into eclipse. The moment you type
|
|
the last character of your annotation, all the methods exist, just as if you write the last character on a method declaration.
|
|
In other words, lombok is <em>not</em> just an annotation processor!
|
|
</p><p>
|
|
But what about your build process? Lombok works just as well in <strong>javac</strong>. All you need to do is add
|
|
<code>lombok.jar</code> to the class path as you compile. Like so:
|
|
<img class="screenshot" src="slideshow/javac.png" />
|
|
</p><p>
|
|
<code>@Data</code> is nice, but its certainly not the only boilerplate buster that lombok has to offer. If you need
|
|
more fine grained control, there's <code>@Getter</code> and <code>@Setter</code>, and to help you in correctly
|
|
cleaning up your resources, <code>@Cleanup</code> can automatically and without cluttering your source files generate
|
|
try/finally blocks to safely call <code>close()</code> on your resource objects. That's not all, but for the complete
|
|
list you'll need to head over to the <a href="features/index.html">feature overview</a>.
|
|
</p><p>
|
|
Ready to install lombok? Start by clicking the download button at the top of this page. Going from clicking that button
|
|
to having your eclipse ready to go takes less than 12 seconds - it's that simple.
|
|
</p><p>
|
|
Thanks for checking out Project Lombok, and let us know what you think!
|
|
</p><p>
|
|
If you'd like to read more, check out
|
|
<a href="http://jnb.ociweb.com/jnb/jnbJan2010.html">Reducing boilerplate code with Project Lombok</a>
|
|
written by Michael Kimberlin.
|
|
</p>
|
|
</div>
|
|
<div class="endBar">
|
|
<a href="index.html">I changed my mind - I do want to see the video!</a>
|
|
</div>
|
|
<div class="footer">
|
|
<a href="credits.html" class="creditsLink">credits</a> | Copyright © 2009 The Project Lombok Authors, licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>.
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
|
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
|
</script>
|
|
<script type="text/javascript">
|
|
try {
|
|
var pageTracker = _gat._getTracker("UA-9884254-1");
|
|
pageTracker._trackPageview();
|
|
} catch(err) {}
|
|
</script>
|
|
</body></html>
|