PageSourceSearch

https://coherence.community/

html coherence.community collected 2026-10-03 19:00:30 UTC 53,328 bytes, 923 lines download raw bytes

1<!DOCTYPE html>
2<!--[if IE 8]>			<html class="ie ie8"> <![endif]-->
3<!--[if IE 9]>			<html class="ie ie9"> <![endif]-->
4<!--[if gt IE 9]><!-->	<html> <!--<![endif]-->
5	<head>
6		<meta charset="utf-8" />
7		<title>Coherence Community</title>
8		<meta name="keywords" content="HTML5,CSS3,Template" />
9		<meta name="description" content="Everything related to Oracle Coherence" />
10		<meta http-equiv="X-UA-Compatible" content="IE=edge" />
11
12		<!-- mobile settings -->
13		<meta name="viewport" content="width=device-width, maximum-scale=1, initial-scale=1, user-scalable=0" />
14
15		<!-- Favicon -->
16		<link rel="shortcut icon" href="assets/images/favicon.ico" />
17
18		<!-- WEB FONTS -->
19		<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,700,800&amp;subset=latin,latin-ext,cyrillic,cyrillic-ext" rel="stylesheet" type="text/css" />
20
21		<!-- CORE CSS -->
22		<link href="assets/plugins/bootstrap/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
23		<link href="assets/css/font-awesome.css" rel="stylesheet" type="text/css" />
24		<link href="assets/css/sky-forms.css" rel="stylesheet" type="text/css" />
25		<link href="assets/css/weather-icons.min.css" rel="stylesheet" type="text/css" />
26		<link href="assets/css/line-icons.css" rel="stylesheet" type="text/css" />
27		<link href="assets/plugins/owl-carousel/owl.pack.css" rel="stylesheet" type="text/css" />
28		<link href="assets/plugins/magnific-popup/magnific-popup.css" rel="stylesheet" type="text/css" />
29		<link href="assets/css/animate.css" rel="stylesheet" type="text/css" />
30		<link href="assets/css/flexslider.css" rel="stylesheet" type="text/css" />
31
32		<!-- REVOLUTION SLIDER -->
33		<link href="assets/css/revolution-slider.css" rel="stylesheet" type="text/css" />
34		<link href="assets/css/layerslider.css" rel="stylesheet" type="text/css" />
35
36		<!-- THEME CSS -->
37		<link href="assets/css/essentials.css" rel="stylesheet" type="text/css" />
38		<link href="assets/css/layout.css" rel="stylesheet" type="text/css" />
39		<link href="assets/css/header-transparent.css" rel="stylesheet" type="text/css" />
40		<link href="assets/css/footer-default.css" rel="stylesheet" type="text/css" />
41		<link href="assets/css/color_scheme/red.css" rel="stylesheet" type="text/css" id="color_scheme" />
42
43        <!-- Prism CSS (syntax hilighting) -->
44        <link href="assets/css/prism.css" rel="stylesheet" />
45		
46        <!-- Modernizr -->
47		
47<script type="text/javascript" src="assets/plugins/modernizr.min.js"></script>
47
48
49		<!--[if lte IE 8]>
50			
50<script src="assets/plugins/respond.js"></script>
50
51		<![endif]-->
52	</head>
53	
54	<!-- 
55		Available body classes: 
56			smoothscroll			= enable chrome browser smooth scroll
57			grey 					= grey content background
58			boxed 					= boxed style
59			pattern1 ... pattern10 	= background pattern
60
61		Background Image - add to body: 
62			data-background="assets/images/boxed_background/1.jpg"
63
64		Examples: 
65			<body class="smoothscroll grey boxed pattern3">
66			<body class="smoothscroll boxed" data-background="assets/images/boxed_background/1.jpg">
67	-->
68	<body class="smoothscroll pattern6">
69
70		<div id="wrapper">
71
72			<header id="header">
73
74				<!-- Top Nav -->
75				<header id="topNav">
76					<div class="container">
77
78						<!-- Logo -->
79						<a class="logo" href="index.html">
80							<img src="assets/images/logo-red.png" height="50" alt="" />
81						</a>
82
83						<!-- Mobile Menu Button -->
84						<button class="btn btn-mobile" data-toggle="collapse" data-target=".nav-main-collapse">
85							<i class="fa fa-bars"></i>
86						</button>
87
88						<!-- Top Nav -->
89						<div class="navbar-collapse nav-main-collapse collapse">
90							<nav class="nav-main">
91
92								<!--
93									NOTE
94									
95									For a regular link, remove "dropdown" class from LI tag and "dropdown-toggle" class from the href.
96									Direct Link Example: 
97
98									<li>
99										<a href="#">HOME</a>
100									</li>
101								-->
102								<ul id="topMain" class="nav nav-pills nav-main white"><!-- add "white" class if you want white menu text color-->
103									<li class="active">
104										<a href="#overview">Overview</a>
105									</li>
106                                    <li>
107                                        <a href="#features">Features</a>
108                                    </li>
109                                    <li>
110                                        <a href="#quickstart">Quick Start</a>
111                                    </li>
112                                    <li>
113                                        <a href="examples.html">Examples</a>
114                                    </li>
115                                    <li>
116                                        <a href="projects.html">Projects</a>
117                                    </li>
118                                    <li class="dropdown">
119										<a class="dropdown-toggle" href="#">Documentation</a>
120										<ul class="dropdown-menu">
121											<li><a href="https://docs.oracle.com/en/middleware/fusion-middleware/coherence/14.1.2/index.html" target="_blank"><i class="fa fa-external-link"></i> Official Documentation (all editions)</a></li>
122											<li class="divider"></li>
123                                            <li><a href="https://docs.coherence.community/coherence/docs/latest" target="_blank"><i class="fa fa-external-link"></i> Coherence CE 25.03 (latest) Documentation</a></li>
124                                            <li><a href="https://docs.coherence.community/coherence/docs/14.1.2.0" target="_blank"><i class="fa fa-external-link"></i> Coherence CE 14.1.2 (LTS) Documentation</a></li>
125				            <li><a href="https://docs.coherence.community/coherence/docs/22.06" target="_blank"><i class="fa fa-external-link"></i> Coherence CE 22.06 (LTS) Documentation</a></li>
126                                            <li><a href="https://docs.coherence.community/coherence/docs/14.1.1.0" target="_blank"><i class="fa fa-external-link"></i> Coherence CE 14.1.1 (LTS) Documentation</a></li>
127										</ul>
128									</li>
129									<li>
130										<a href="https://medium.com/oracle-coherence" target="_blank"><i class="fa fa-medium"></i> Blog</a>
131									</li>
132									<li>
133										<a href="https://github.com/oracle/coherence" target="_blank"><i class="fa fa-github"></i> Code</a>
134									</li>
135								</ul>
136							</nav>
137						</div>
138						<!-- /Top Nav -->
139
140					</div><!-- /.container -->
141				</header>
142				<!-- /Top Nav -->
143
144			</header>
145
146
147			<!-- REVOLUTION SLIDER -->
148			<div class="slider fullwidthbanner-container roundedcorners">
149				<div class="fullwidthbanner" data-height="650">
150					<ul class="hide">
151
152                        <!-- SLIDE  -->
153                        <li data-transition="fade" data-slotamount="14"  data-masterspeed="300" data-delay="12000">
154
155                            <!-- COVER IMAGE -->
156                            <img src="assets/images/1x1.png" data-lazyload="assets/images/wall.jpg" alt="" data-bgfit="cover" data-bgposition="left top" data-bgrepeat="no-repeat" />
157
158                            <div class="tp-caption modern_medium_fat_white lfl stl"
159                                data-x="60"
160                                data-y="300"
161                                data-speed="300"
162                                data-start="500"
163                                data-easing="easeOutExpo">ARE YOU BUILDING
164                            </div>
165
166                            <div class="tp-caption large_bold_white sft stb"
167                                data-x="60"
168                                data-y="323"
169                                data-speed="300"
170                                data-start="1000"
171                                data-easing="easeOutExpo">MICROSERVICES?
172                            </div>
173
174                            <div class="tp-caption lfl stl medium_light_white"
175                                data-x="950"
176                                data-y="80"
177                                data-speed="3000"
178                                data-start="2000"
179                                data-easing="easeOutExpo"><img src="assets/images/sockshop-ui-1.png" width="270" alt="" />
180                            </div>
181
182                            <div class="tp-caption sfb medium_light_white"
183                                data-x="570"
184                                data-y="220"
185                                data-speed="2000"
186                                data-start="2000"
187                                data-easing="easeOutExpo"><img src="assets/images/sockshop-final.png" width="700" alt="" />
188                            </div>
189
190                            <div class="tp-caption medium_light_white sft stb"
191                                data-x="60"
192                                data-y="400"
193                                data-speed="500"
194                                data-start="3000"
195                                data-easing="easeOutExpo">You've come to the right place
196                            </div>
197
198                        </li>
199
200                        <!-- SLIDE  -->
201                        <li data-transition="fade" data-slotamount="7"  data-masterspeed="300" data-delay="12000">
202
203                            <!-- COVER IMAGE -->
204                            <img src="assets/images/1x1.png" data-lazyload="assets/images/wall.jpg" alt="" data-bgfit="cover" data-bgposition="left top" data-bgrepeat="no-repeat" />
205
206                            <div class="tp-caption modern_medium_fat_white lfl stl"
207                                data-x="60"
208                                data-y="300"
209                                data-speed="300"
210                                data-start="500"
211                                data-easing="easeOutExpo">DO YOU NEED TO
212                            </div>
213
214                            <div class="tp-caption large_bold_white sft stb"
215                                data-x="60"
216                                data-y="323"
217                                data-speed="300"
218                                data-start="1000"
219                                data-easing="easeOutExpo">MONITOR THEM?
220                            </div>
221
222                            <div class="tp-caption lfl stl medium_light_white"
223                                data-x="800"
224                                data-y="80"
225                                data-speed="3000"
226                                data-start="2000"
227                                data-easing="easeOutExpo"><img src="assets/images/monitoring.png" width="500" alt="" />
228                            </div>
229
230                            <div class="tp-caption sfb medium_light_white"
231                                data-x="620"
232                                data-y="300"
233                                data-speed="2000"
234                                data-start="2000"
235                                data-easing="easeOutExpo"><img src="assets/images/tracing.png" width="500" alt="" />
236                            </div>
237
238                            <div class="tp-caption medium_light_white sft stb"
239                                data-x="60"
240                                data-y="400"
241                                data-speed="500"
242                                data-start="3000"
243                                data-easing="easeOutExpo">Built-In Support for Metrics and Tracing
244                            </div>
245
246                        </li>
247                        <!-- /SLIDE -->
248
249					</ul>
250					<div class="tp-bannertimer"></div>
251				</div>
252			</div>
253			<!-- /REVOLUTION SLIDER -->
254
255
256			<!-- CALLOUT -->
257			<div class="callout dark"><!-- add "styleBackgroundColor" class for colored background and white text OR "dark" for a dark callout -->
258				<div class="container">
259
260					<div class="row">
261
262						<div class="col-md-8"><!-- title + shortdesc -->
263							<h3>
264                                The best way to build
265                                <span class="word-rotator"><!-- word rotator -->
266                                    <span class="items bold">
267                                        <span><strong>modern</strong></span>
268                                        <span><strong>stateful</strong></span>
269                                        <span><strong>scalable</strong></span>
270                                        <span><strong>cloud native</strong></span>
271                                    </span>
272                                </span><!-- /word rotator -->
273                            </h3>
274                            <h3>
275                                microservices
276                            </h3>
277						</div>
278
279						<div class="col-md-4 hidden-sm hidden-xs">
280                            <img src="assets/images/microservices-platform.png" height="80" alt="" />
281						</div>
282
283					</div>
284
285				</div>
286			</div>
287			<!-- /CALLOUT -->
288
289			<!-- WELCOME -->
290			<section>
291				<div class="container">
292					<header>
293                        <a name="overview"></a>
294						<h2>
295							Welcome to <span class="bold"><em>Coherence Community Edition</em></span>
296						</h2>
297                        <p class="lead">Coherence CE (Community Edition) is a free and open source edition of Oracle
298                        Coherence, first and market-leading in-memory data grid. Since its initial release in 2001,
299                        it has been used by hundreds of customers across many industries to power some of the
300                        mission critical systems you use every day. Often immitated, but never duplicated, it is now
301                        available for everyone to use free of charge.</p>
302					</header>
303                    
304                    
305					<!-- FEATURED BOXES 3 -->
306					<div class="row featured-box-minimal">
307
308						<div class="col-md-4 col-sm-6 col-xs-12">
309							<h4><i class="fa fa-arrows"></i> Scalable</h4>
310                            <p>Coherence clusters can easily scale to hundreds of members (JVMs), all of which can both store and process the data. This allows you to scale both the data storage and the processing capacity by simply adding more members to the cluster, which you can do at any time.</p>
311						</div>
312
313						<div class="col-md-4 col-sm-6 col-xs-12">
314							<h4><i class="fa fa-cog"></i> Reliable</h4>
315                            <p>Coherence stores each piece of data within multiple members (one primary and one or more backup copies), and doesn't consider any mutating operation complete until the backup(s) are successfully created. This ensures that your data grid can tolerate the failure at any level: from single JVM, to whole data center.</p>
316						</div>
317
318						<div class="col-md-4 col-sm-6 col-xs-12">
319							<h4><i class="fa fa-rocket"></i> Fast</h4>
320                            <p>Coherence is fast. Like, sub-millisecond fast. Each member of the cluster is aware of where each piece of data resides and can access it using a single network call. There are no connections to acquire or release, and no distributed transactions to commit or roll back.</p>
321						</div>
322                    </div>
323                    
324                    <div class="row featured-box-minimal">
325
326						<div class="col-md-4 col-sm-6 col-xs-12">
327							<h4><i class="fa fa-database"></i> Durable</h4>
328                            <p>Coherence can optionally persist data to disk (either local or shared), which prevents data loss even in the case of complete cluster outage. Coherence Grid Edition (commercial) also supports data center replication and application failover.</p>
329						</div>
330
331						<div class="col-md-4 col-sm-6 col-xs-12">
332							<h4><i class="fa fa-cloud"></i> Cloud Enabled</h4>
333                            <p>Coherence comes with its own Kubernetes Operator, which allows you to provision Coherence-based application into any Kubernetes cluster using 5 lines of YAML. It also has built-in supp
333ort for OpenTracing, Prometheus and Grafana, and comes with a number of custom Grafana dashboards that allow you to monitor cluster of any size in any environment.</p>
334						</div>
335
336						<div class="col-md-4 col-sm-6 col-xs-12">
337							<h4><i class="fa fa-code"></i> Joy to Use</h4>
338                            <p>Coherence is just a library that you can embed into your application and start coding against. If you know how to use <code>java.util.Map</code>, you know how to get started with Coherence. From basic gets and puts, to Stream API, it's all there. Once you reach the limits of basic functionality, you can leverage some of the advanced features that will allow you to build better distributed applications.</p>
339						</div>
340
341					</div>
342					<!-- /FEATURED BOXES 3 -->
343
344				</div>
345			</section>
346			<!-- /WELCOME -->
347
348            <!-- FEATURES CALLOUT -->
349            <div class="callout dark">
350                <div class="container">
351
352                    <a name="features"></a>
353                    <div class="row">
354                        <div class="col-md-9">
355                            <h2>Coherence <strong>Features</strong></h2>
356                            <h4>Coherence is designed to run 24/7, all year long. Nothing makes us more proud than when the users tell us they haven't touched their production cluster in years.</h4>
357                            <h4>Although, we would like them to upgrade and use the new features from time to time...</h4>
358                        </div>
359                    </div>
360                    
361                </div>
362            </div>
363            <!-- /FEATURES CALLOUT -->
364
365            <!-- FEATURES -->
366			<section class="alternate">
367                <div class="container">
368                    
369                    <div class="row">
370						<div class="col-md-4">
371							<h4>Clustering and <strong>Data Sharding</strong></h4>
372                            <p>Coherence requires minimal configuration in order for the members to discover one another and form a cluster. This makes it just as easy to create a cluster of 500 members as it is to create a cluster of 5 members, both on the physical hardware and in virtualized environments.</p>
373                            <p>Once the cluster is formed, Coherence will automatically shard the data across all the members and ensure that each piece of data has a backup copy as well. No cluster member is special, and any member can fail at any given time without significant impact on the cluster as a whole.</p>
374                            <p>In other words, failure is expected and built into the architecture, not an exception.</p>
375						</div>
376						
377						<div class="col-md-8 col-sm-4 text-center">
378							<video controls class="shadow" src="assets/video/clustering.mp4" poster="assets/images/clustering.png" width="100%"/>
379						</div>
380					</div>
381                    <hr/>
382                    
383                    <div class="row">
384                        <div class="col-md-4">
385                            <h4>Scalability and <strong>High Avalability</strong></h4>
386                            <p>Coherence can be easily scaled out to increase both the storage and the processing capacity, and can be scaled in just as easily to reduce resource usage when the additional capacity is not needed, to the limit of the in-memory data set size.</p>
387                            <p>Whenever you add or remove cluster members, Coherence will automatically rebalance the data by moving some of the partitions to new members or be restoring partitions from backup for the departed members.</p>
388                            <p>Coherence is aware of the network topology and always stores backups <strong>as far away as possible</strong> from the primary copy. In the common case of a cluster spanning multiple availability domains/zones in the cloud region, this allows you to lose a whole availability domain without any data loss.</p>
389                        </div>
390                        
391                        <div class="col-md-8 col-sm-4 text-center">
392                            <video controls class="shadow" src="assets/video/ha.mp4" poster="assets/images/ha.png" width="100%"/>
393                        </div>
394                    </div>
395                    <hr/>
396
397                    <div class="row">
398                        <div class="col-md-4">
399                            <h4>Disk-Based <strong>Persistence</strong></h4>
400                            <p>You also have the option of persisting data to disk, either actively, as the changes happen, or on demand, by taking periodic snapshots of the cluster state. You can use either local or shared disk, but we strongly recommend that you use SSD in either case if you care about peformance. When running inside of Kubernetes, both regular volumes and PVCs are fully supported.</p>
401                            <p>This allows you to quickly restore cluster state from disk in case of catastrophic failure, such as data center power loss, or to speed up whole-cluster upgrades if you can tolerate some downtime. If you can't, you can still use persistence to create backups, and rolling upgrades to perform cluster upgrades while keeping the system fully operational.</p>
402                        </div>
403                        
404                        <div class="col-md-8 col-sm-4 text-center">
405                            <video controls class="shadow" src="assets/video/persistence.mp4" poster="assets/images/persistence.png" width="100%"/>
406                        </div>
407                    </div>
408                    <hr/>
409
410                    <div class="row">
411                        <div class="col-md-4">
412                            <h4>Key-Value <strong>Data Store</strong></h4>
413                            <p>Coherence <code>NamedCache</code> API is an extension of <code>java.util.Map</code> interface, so if you know how to use Java <code>Map</code>, you already know how to use Coherence for basic key-value operations. The difference is that now you have a fault tolerant <code>Map</code> that can be scaled across many cluster members and optionally persisted to disk</p>
414                            <p>
414Key-based operations in Coherence are very efficient. Every cluster member is aware of the partition/shard distribution across the cluster, and the partition that a given key belongs to is determined using a consistent hashing algorithm. That means that any piece of data is only one direct network call away, regardless of the cluster size.</p>
415                            <p>Unlike some of the competitors, Coherence lets you work with classes and objects like you normally would, and converts them to binary data for network transfer and storage purposes when necessary, using one of the several supported serialization formats.</p>
416                        </div>
417
418                        <div class="col-md-8 col-sm-4 text-center">
419                            <video controls class="shadow" src="assets/video/kv.mp4" poster="assets/images/kv.png" width="100%"/>
420                        </div>
421                    </div>
422                    <hr/>
423
424                    <div class="row">
425                        <div class="col-md-4">
426                            <h4>Parallel <strong>Queries</strong></h4>
427                            <p>Being able to store and access data based on a key is great, but sometimes you need more than that. Coherence allows you to query on any data attribute present in your data model, and even allows you to define your own query <strong>filter</strong> if one of the built-in ones doesn't fit the bill. If you defined an index for a given query attribute, it will be used to optimize the query execution and avoid unnecessary deserialization.</p>
428                            <p>Coherence executes queries in parallel, across the whole cluster, by default, allowing you to query across the whole data set at once without worrying about its physical distribution. However, it also allows you to execute a targeted query against a single cluster member in situations when you know that all possible results will be collocated based on data affinity configuration. This allows you to optimize queries even further, by limiting the amount of data that needs to be processed.</p>
429                        </div>
430                        
431                        <div class="col-md-8 col-sm-4 text-center">
432                            <video controls class="shadow" src="assets/video/query.mp4" poster="assets/images/query.png" width="100%"/>
433                        </div>
434                    </div>
435                    <hr/>
436
437                    <div class="row">
438                        <div class="col-md-4">
439                            <h4>Efficient <strong>Aggregation</strong></h4>
440                            <p>Sometimes you don't need the actual data objects that are stored within the data grid, but the derived, calculated result based on them. This is where Coherence aggragation features come in handy.</p>
441                            <p>Coherence <strong>aggregators</strong> are similar to Java <code>Collectors</code> -- they <em>accumulate</em> individual data objects into a partial result in parallel, across all cluster members, and then <em>combine</em> partial results from all the members into a final result that is ultimately returned to the caller.</p>
442                            <p>Aggregations can be executed against the whole data set, or they can be limited to a subset of the data using a query or a key set. They also tend to scale linearly, so you can typically improve aggregation performance by simply spreading the data (and the processing load) across more cluster members.</p>
443                        </div>
444                        
445                        <div class="col-md-8 col-sm-4 text-center">
446                            <video controls class="shadow" src="assets/video/aggregation.mp4" poster="assets/images/aggregation.png" width="100%"/>
447                        </div>
448                    </div>
449                    <hr/>
450
451                    <div class="row">
452                        <div class="col-md-4">
453                            <h4>In-Place <strong>Processing</strong></h4>
454                            <p>If there is one defining feature that makes Coherence stand out from many competing technologies, and allows you to write efficient distributed a
454pplications, this is it.</p>
455                            <p>The problem with many applications that both hurts their performance and prevents them from scaling is that they simply move too much data over the network and require complicated distributed concurrency control. <em>Read-modify-write</em> is probably the most common data access pattern in vast majority of applications, even though it is very inefficient way of performing data modification.</p>
456                            <p>Coherence addresses this problem by allowing you to send the data modification code into the grid and execute it where the data is, against one or more entries. This can not only significantly impact how much data needs to be moved over the wire, but it also takes care of cluster-wide concurrency control &mdash; each <strong>entry processor</strong> has the exclusive access to the entry it is processing for the duration of its execution.</p>
457                            <p>Think of it as stored procedures, but using Java lambdas and rich server-side domain models.</p>
458                        </div>
459
460                        <div class="col-md-8 col-sm-4 text-center">
461                            <video controls class="shadow" src="assets/video/processor.mp4" poster="assets/images/processor.png" width="100%"/>
462                        </div>
463                    </div>
464                    <hr/>
465
466                    <div class="row">
467                        <div class="col-md-4">
468                            <h4>Sophisticated <strong>Event Model</strong></h4>
469                            <p>Coherence allows you to react to almost any event that happens within the cluster: members joining or leaving, services starting or shutting down, data partitions being transferred or restored from disk &mdash; you name it, it is probably there.</p>
470                            <p>Of course, you can also observe data modification events, both on the server-side and using any of the supported clients. Whether it's entry inserts, updates and removals, or entry processor executions, it's all observable (and in many cases, vetoable).</p>
471                            <p>Coherence <strong>events</strong> and <strong>interceptors</strong> also allow you to leverage Coherence data grid as the central integration hub for multiple back end systems, and provide what appears to be a single unified data store for your front end applications.
472                        </div>
473                        
474                        <div class="col-md-8 col-sm-4 text-center">
475                            <video controls class="shadow" src="assets/video/events.mp4" poster="assets/images/events.png" width="100%"/>
476                        </div>
477                    </div>
478				</div>
479			</section>
480			<!-- /FEATURES -->
481
482			<!-- DARK CALLOUT -->
483			<div class="callout dark arrow-up">
484				<div class="container text-center">
485
486                    <h2>And many more...</h2>
487                    <p>Doesn't matter if you are a begginer or an advanced developer. Coherence is easy to use, distributed to its core, and has a number of features that will make development of modern cloud native applications a breeze.</p>
488					
489					<div class="divider half-margins"><!-- divider --></div>
490
491					<div class="row text-left">
492						<div class="col-md-4 col-sm-4">
493							<ul class="list-icon spaced check-circle">
494								<li>Synchronous and Asynchronous API</li>
495                                <li>Extensive Security Features</li>
496								<li>Support for CDI</li>
497                                <li>Support for Eclipse MicroProfile</li>
498                                <li>Support for OpenTracing</li>
499                                <li>Support for OpenMetrics</li>
500                                
501							</ul>
502						</div>
503						<div class="col-md-4 col-sm-4">
504							<ul class="list-icon spaced check-circle">
505                                <li>Native Clients for Java, .NET and C++</li>
506                                <li>REST API</li>
507                                <li>JMX and REST-based Management</li>
508                                <li>
508Data Affinity Support</li>
509                                <li>Partition-Local Transactions</li>
510                                <li>Built-In Durable Messaging</li>
511							</ul>
512						</div>
513						<div class="col-md-4 col-sm-4">
514							<ul class="list-icon spaced check-circle">
515								<li>Custom Kubernetes Operator</li>
516								<li>Integration with Prometheus</li>
517                                <li>Integration with Jaeger</li>
518                                <li>Awesome Grafana Dashboards</li>
519                                <li>Extensive Documentation</li>
520                                <li>Realistic Sample Applications</li>
521							</ul>
522						</div>
523					</div>
524
525				</div>
526			</div>
527			<!-- /DARK CALLOUT -->
528
529			<!-- QUICKSTART CALLOUT -->
530			<div class="callout styleBackgroundColor"><!-- add "styleBackgroundColor" class for colored background and white text OR "dark" for a dark callout -->
531				<div class="container">
532
533					<div class="row">
534
535                        <a name="quickstart"></a>
536						<div class="col-md-9"><!-- title + shortdesc -->
537                            <h2>Quick <strong>Start</strong></h2>
538							<h4>Did we convince you to <strong>give Coherence a try?</strong></h4>
539                            <p>
540                                The following sections will walk you through the implementation of a simple
541                                To Do List application using Coherence and Helidon, show you how to package
542                                it into a Docker image, run it, and prove that it works.
543                            </p>
544                            <p>
545                                We could've done a simpler, "Hello World"-style app, but where is the fun in that?
546                            </p>
547						</div>
548
549					</div>
550				</div>
551			</div>
552			<!-- /QUICKSTART CALLOUT -->
553
554            <!-- QUICKSTART -->
555            <section>
556                <div class="container">
557                
558                    <div class="row featured-box-minimal">
559                        <div class="col-md-4">
560                            <h4><i class="fa fa-play-circle styleColor"></i> Create Maven Project</h4>
561                            <p>
562                                The <code>pom.xml</code> file is a good starting point for Helidon microservices
563                                that use Coherence as a data store.
564                            </p>
565                            <p>Few things are worth pointing out:</p>
566                            <ol>
567                                <li>
568                                    The parent POM is set to <code>io.helidon.applications:helidon-mp</code> and
569                                    we add Helidon MicroProfile bundle and JSON Binding support as dependencies.
570                                    This ensures that all necessary Helidon dependencies are imported correctly.
571                                </li>
572                                <li>
573                                    We add Coherence CDI Server as a dependency, which ensures that Coherence server
574                                    is started within Helidon application via CDI extension.
575                                </li>
576                                <li>
577                                    We add Coherence MicroProfile Config as a dependency, which allows us to configure
578                                    Coherence using Helidon MP Configuration and changes Coherence logging defaults
579                                    to align Coherence log output with Helidon logging format.
580                                </li>
581                                <li>
582                                    We configure Jandex plugin to index any CDI beans we may have, in order to speed
583                                    up application startup.
584                                </li>
585                                <li>
586                                    We configure Jib plugin within a <code>docker</code> profile, which allows us to
587                                    create Docker image for our service within Maven build, without the need for a
588                                    separate <code>
588Dockerfile</code>.
589                                </li>
590                            </ol>
591                        </div>
592                        
593                        <div class="col-md-8">
594                            <pre class="line-numbers" data-src="quickstart/pom.xml"></pre>
595                        </div>
596                    </div>
597                    <hr/>
598
599                    <div class="row featured-box-minimal">
600                        <div class="col-md-4">
601                            <h4><i class="fa fa-play-circle styleColor"></i> Implement Data Model</h4>
602                            <p>
603                                The <code>Task</code> class on the right represents data model for our to-do
604                                items that is used both within REST API (as a way to marshal JSON requests and
605                                responses) and as a storage data model class in Coherence. It is a very simple,
606                                serializable POJO.
607                            </p>
608                            <p>
609                                Coherence provides more efficient serialization mechanisms as well, but
610                                in this example we are using plain Java serialization for simplicity.
611                            </p>
612                        </div>
613                        
614                        <div class="col-md-8">
615                            <pre class="line-numbers" data-src="quickstart/src/main/java/com/oracle/coherence/examples/todo/Task.java"></pre>
616                        </div>
617                    </div>
618                    <hr/>
619
620                    <div class="row featured-box-minimal">
621                        <div class="col-md-4">
622                            <h4><i class="fa fa-play-circle styleColor"></i> Implement REST API</h4>
623                            <p>
624                                The REST API is implemented as a JAX-RS resource that will be automatically
625                                discovered and deployed by Helidon.
626                            </p>
627                            <p>
628                                Coherence <code>NamedMap</code> instance is injected as a dependency by CDI,
629                                and is used to implement data access logic in the various resource methods.
630                            </p>
631                            <p>
632                                Some of the resource methods, such as <code>createTask</code> and
633                                <code>deleteTask</code> are fairly simple and perform familiar <code>Map.put</code>
634                                and <code>Map.remove</code> operations against Coherence <code>NamedMap</code>.
635                            </p>
636                            <p>
637                                The remaining two methods are a bit more interesting and demonstrate some of
638                                the additional features of <code>NamedMap</code>. The <code>getTasks</code>
639                                method shows usage of Coherence Query API, and calls <code>NamedMap.values</code>
640                                to retrieve filtered, sorted set of results.
641                            </p>
642                            <p>
643                                The <code>updateTask</code> method on the other hand shows an example of
644                                entry processor execution against a single entry by sending a lambda to a
645                                storage member that owns the task with a given identifier, and updating
646                                the task in-place.
647                            </p>
648                        </div>
649                        
650                        <div class="col-md-8">
651                            <pre class="line-numbers" data-src="quickstart/src/main/java/com/oracle/coherence/examples/todo/ToDoResource.java"></pre>
652                        </div>
653                    </div>
654                    <hr/>
655
656                    <div class="row featured-box-minimal">
657                        <div class="col-md-4">
658                            <h4><i class="fa fa-play-circle styleColor"></i> Enable CDI</h4>
659                            <p>
660                                Our service is a CDI Bean Archive, so we need to make sure it is treated
661                                that way by adding <code>beans.xml</code> file to the <code>resources/META-INF</code>
662                                directory.
663                            </p>
664                        </div>
665                        
666                        <div class="col-md-8">
667                            <pre class="line-numbers" data-src="quickstart/src/main/resources/META-INF/beans.xml"></pre>
668                        </div>
669                    </div>
670                    <hr/>
671
672                    <div class="row featured-box-minimal">
673                        <div class="col-md-4">
674                            <h4><i class="fa fa-play-circle styleColor"></i> Configure Logging</h4>
675                            <p>
676                                Both Coherence and Helidon are configured to use Java Logging, so we need
677                                to provide necessary Java Logging configuration by adding <code>logging.properties</code>
678                                file on the right to the <code>resources</code> directory.
679                            </p>
680                        </div>
681                        
682                        <div class="col-md-8">
683                            <pre class="line-numbers" data-src="quickstart/src/main/resources/logging.properties"></pre>
684                        </div>
685                    </div>
686                    <hr/>
687
688                    <div class="row featured-box-minimal">
689                        <div class="col-md-4">
690                            <h4><i class="fa fa-play-circle styleColor"></i> Build the Service</h4>
691                            <p>
692                                With all the pieces in place, we are now ready to compile the service and
693                                create a Docker image for it.
694                            </p>
695                        </div>
696
697                        <div class="col-md-8">
698                            <pre class="command-line" data-user="user" data-host="localhost">
699                                <code class="language-bash">
700                                    mvn clean install
701                                    mvn package -P docker
702                                </code>
703                            </pre>
704                        </div>
705                    </div>
706                    <hr/>
707
708                    <div class="row featured-box-minimal">
709                        <div class="col-md-4">
710                            <h4><i class="fa fa-play-circle styleColor"></i> Run the Service</h4>
711                            <p>
712                                Once the Docker image is created, you can run the service locally.
713                            </p>
714                        </div>
715
716                        <div class="col-md-8">
717                            <pre class="command-line" data-user="user" data-host="localhost">
718                                <code class="language-bash">
719                                    docker run -m 200MB -p 7001:7001 coherence/quickstart
720                                </code>
721                            </pre>
722                        </div>
723                    </div>
724                    <hr/>
725
726                    <div class="row featured-box-minimal">
727                        <div class="col-md-4">
728                            <h4><i class="fa fa-play-circle styleColor"></i> Test the Service</h4>
729                            <p>
730                                Now that the service is up and running, you can make HTTP request
731                                to the API endpoints using HTTP client of your choice. We strongly
732                                recommend <a href="https://www.postman.com" target="_blank">Postman</a>
733                                but <code>curl</code> will do.
734                            </p>
735                        </div>
736
737                        <div class="col-md-8">
738                            <pre class="command-line" data-user="user" data-host="localhost" data-filter-output="(out)">
739                                <code class="language-bash">
740                                    curl -i -X POST -H "Content-Type: application/json" -d '{"description": "Learn Coherence"}' http://localhost:7001/tasks
741                                    (out)HTTP/1.1 204 No Content
742                                    (out)Date: Tue, 23 Jun 2020 10:40:57 GMT
743                                    (out)connection: keep-alive
744                                    (out)
745                                    curl -X GET -H "Accept: application/json" http://localhost:7001/tasks
746                                    (out)[{"completed":false,"description":"Learn Coherence","id":"155512ed-bf79-4515-a92a-734f65e721d0"}]
747                                    (out)
748                                    curl -X PUT -H "Content-Type: application/json" -d '{"completed": true}' http://localhost:7001/tasks/155512ed-bf79-4515-a92a-734f65e721d0
749                                    (out){"completed":true,"description":"Learn Coherence","id":"155512ed-bf79-4515-a92a-734f65e721d0"}
750                                    (out)
751                                    curl -i -X DELETE http://localhost:7001/tasks/155512ed-bf79-4515-a92a-734f65e721d0
752                                    (out)HTTP/1.1 204 No Content
753                                    (out)Date: Tue, 23 Jun 2020 10:50:05 GMT
754                                    (out)connection: keep-alive
755                                </code>
756                            </pre>
757                        </div>
758                    </div>
759
760                </div>
761            </section>
762            <!-- /QUICKSTART -->
763            <!-- QUICKSTART CALLOUT -->
764            <div class="callout styleBackgroundColor"><!-- add "styleBackgroundColor" class for colored background and white text OR "dark" for a dark callout -->
765                <div class="container">
766
767                    <div class="row">
768
769                        <div class="col-md-9"><!-- title + shortdesc -->
770                             <h2><strong>Congratulations!</strong></h2>
771                             <h4>You've just implemented your first stateful service using Coherence and Helidon</h4>
772                        </div>
773
774                    </div>
775                </div>
776            </div>
777            <!-- /QUICKSTART CALLOUT -->
778
779			<!-- TESTIMONIALS -->
780			<section>
781				<div class="container">
782					
783					
784					<div class="row">
785						<h2>What are our users saying?</h2>
786						<div class="col-md-8 col-sm-4 testimonial">
787							<p>
788                                Stateless systems are extremely data hungry, and state management (at scale) is one of the biggest
789                                challenges we've faced. At our scale, no traditional data layer would've worked.<br/><br/>
790                                Coherence allows us to manage 9 terabytes of data in memory, in a format easily consumable by our services. This
791                                enables us to handle 1.3 billion calls, and produce 300 million events per day, across 5,600 microservices.</p>
792							<cite class="block"><strong>Arun Giri</strong>, Union Pacific Railroad</cite>
793						</div>
794
795						<div class="divider half-margins"></div>
796
797					</div>
798
799                    <div class="row">
800                        <div class="col-md-12 col-sm-4">
801                            <video controls class="shadow" src="assets/video/arun-giri-interview.mp4" width="100%"/>
802                        </div>
803                    </div>
804
805				</div>
806			</section>
807			<!-- /TESTIMONIALS -->
808
809
810			<!-- FOOTER -->
811			<footer id="footer">
812                <div class="container">
813
814                    <div class="row">
815
816                        <!-- col #1 -->
817                        <div class="spaced col-md-4 col-sm-4">
818
819                            <h4>Stay <strong>Connected</strong></h4>
820
821                            <p>
822                                Connect with us on social networks.
823                            </p>
824
825                            <p class="block"><!-- social -->
826                                <a href="https://twitter.com/OracleCoherence" target="_blank" class="social fa fa-twitter"></a>
827                                <a href="https://www.linkedin.com/groups/1782166/" target="_blank" class="social fa fa-linkedin"></a>
828                                <a href="http://www.facebook.com/oraclecoherencepm" target="_blank" class="social fa fa-facebook"></a>
829                            </p><!-- /social -->
830
831                            <h4><strong>Contribute</strong></h4>
832 
833                            <ul class="list-unstyled nobordered">
834                                <li><a class="block" href="https://github.com/oracle/coherence" target="_blank"><i class="fa fa-github"></i> Fork us on GitHub and start coding.</a></li>
835                            </ul>
836      
837                        </div>
838                        <!-- /col #1 -->
839
840                        <!-- col #2 -->
841                        <div class="spaced col-md-8 col-sm-8">
842
843                            <div class="row">
844
845                                <div class="col-md-4 col-sm-12 col-xs-12">
846                                    <h4>Learn <strong>More</strong></h4>
847                                    <ul class="list-unstyled nobordered">
848                                        <li><a class="block" href="https://www.youtube.com/user/OracleCoherence" target="_blank"><i class="fa fa-youtube"></i> Watch our Videos</a></li>
849                                        <li><a class="block" href="https://medium.com/oracle-coherence" target="_blank"><i class="fa fa-medium"></i> Read our Blog</a></li>
850                                        <li><a class="block" href="https://stackoverflow.com/tags/oracle-coherence" target="_blank"><i class="fa fa-stack-overflow"></i> Find Answers</a></li>
851                                        <li><a class="block" href="https://join.slack.com/t/oraclecoherence/shared_invite/zt-9ufv220y-Leudk0o5ntgNV0xraa8DNw" target="_blank"><i class="fa fa-slack"></i> Chat with Us</a></li>
852                                    </ul>
853                                </div>
854
855                                <div class="col-md-4 hidden-sm hidden-xs">
856                                    <h4>Related <strong>Projects</strong></h4>
857                                    <ul class="list-unstyled nobordered">
858                                        <li><a class="block" href="https://github.com/oracle/coherence-operator" target="_blank"><i class="fa fa-external-link"></i> Coherence  Operator</a></li>
859                                        <li><a class="block" href="https://helidon.io" target="_blank"><i class="fa fa-external-link"></i> Helidon </a></li>
860                                        <li><a class="block" href="https://www.graalvm.org" target="_blank"><i class="fa fa-external-link"></i> GraalVM</a></li>
861                                        <li><a class="block" href="https://verrazzano.io" target="_blank"><i class="fa fa-external-link"></i> Verrazzano</a></li>
862                                        <li><a class="block" href="https://github.com/coherence-community/coherence-spring" target="_blank"><i class="fa fa-external-link"></i> Spring Integration</a></li>
863                                        <li><a class="block" href="https://github.com/coherence-community/coherence-hibernate" target="_blank"><i class="fa fa-external-link"></i> Hibernate Integration</a></li>
864                                    </ul>
865                                </div>
866
867                                <!--
868                                <div class="col-md-4 hidden-sm hidden-xs">
869                                    <h4>About <strong>Us</strong></h4>
870                                    <ul class="list-unstyled nobordered">
871                                        <li><a class="block" href="team.html"><i class="fa fa-angle-right"></i> Meet the Team</a></li>
872                                        <li><a class="block" href="events.html"><i class="fa fa-angle-right"></i> Upcoming Events</a></li>
873                                        <li><a class="block" href="presentations.html"><i class="fa fa-angle-right"></i> Past Presentations</a></li>
874                                        <li><a class="block" href="faq.html"><i class="fa fa-angle-right"></i> FAQ</a></li>
875                                    </ul>
876                                </div>
877                                -->
878
879                            </div>
880
881                        </div>
882                        <!-- /col #2 -->
883
884                    </div>
885
886                </div>
887
888				<hr />
889
890				<div class="copyright">
891					<div class="container text-center fsize12">
892                        Copyright &copy; 2020, 2025 Oracle and/or its affiliates. All rights reserved &bull; Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.
893					</div>
894				</div>
895			</footer>
896			<!-- /FOOTER -->
897
898			<a href="#" id="toTop"></a>
899
900		</div><!-- /#wrapper -->
901
902		<!-- JAVASCRIPT FILES -->
903		
903<script type="text/javascript" src="assets/plugins/jquery-2.2.3.min.js"></script>
903
904		
904<script type="text/javascript" src="assets/plugins/jquery.isotope.js"></script>
904
905		
905<script type="text/javascript" src="assets/plugins/masonry.js"></script>
905
906
907		
907<script type="text/javascript" src="assets/plugins/bootstrap/js/bootstrap.min.js"></script>
907
908		
908<script type="text/javascript" src="assets/plugins/magnific-popup/jquery.magnific-popup.min.js"></script>
908
909		
909<script type="text/javascript" src="assets/plugins/owl-carousel/owl.carousel.min.js"></script>
909
910		
910<script type="text/javascript" src="assets/plugins/knob/js/jquery.knob.js"></script>
910
911		
911<script type="text/javascript" src="assets/plugins/flexslider/jquery.flexslider-min.js"></script>
911
912
913		<!-- REVOLUTION SLIDER -->
914		
914<script type="text/javascript" src="assets/plugins/revolution-slider/js/jquery.themepunch.tools.min.js"></script>
914
915		
915<script type="text/javascript" src="assets/plugins/revolution-slider/js/jquery.themepunch.revolution.min.js"></script>
915
916		
916<script type="text/javascript" src="assets/js/revolution_slider.js"></script>
916
917		
918        <!-- PRISM -->
919        
919<script type="text/javascript" src="assets/js/prism.js"></script>
919
920
921		
921<script type="text/javascript" src="assets/js/scripts.js"></script>
921
922	</body>
923</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.