package-info.java revision 1551:f3b883bec2d0
1303241Sdim/* 2303241Sdim * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. 3353358Sdim * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4353358Sdim * 5353358Sdim * This code is free software; you can redistribute it and/or modify it 6303241Sdim * under the terms of the GNU General Public License version 2 only, as 7303241Sdim * published by the Free Software Foundation. Oracle designates this 8303241Sdim * particular file as subject to the "Classpath" exception as provided 9303241Sdim * by Oracle in the LICENSE file that accompanied this code. 10303241Sdim * 11303241Sdim * This code is distributed in the hope that it will be useful, but WITHOUT 12303241Sdim * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13303241Sdim * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14303241Sdim * version 2 for more details (a copy is included in the LICENSE file that 15341825Sdim * accompanied this code). 16341825Sdim * 17314564Sdim * You should have received a copy of the GNU General Public License version 18303241Sdim * 2 along with this work; if not, write to the Free Software Foundation, 19303241Sdim * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20314564Sdim * 21303241Sdim * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22314564Sdim * or visit www.oracle.com if you need additional information or have any 23303241Sdim * questions. 24314564Sdim */ 25314564Sdim 26314564Sdim/* 27314564Sdim * This file is available under and governed by the GNU General Public 28314564Sdim * License version 2 only, as published by the Free Software Foundation. 29314564Sdim * However, the following notice accompanied the original version of this 30314564Sdim * file, and Oracle licenses the original version of this file under the BSD 31314564Sdim * license: 32314564Sdim */ 33314564Sdim/* 34314564Sdim Copyright 2009-2013 Attila Szegedi 35314564Sdim 36314564Sdim Licensed under both the Apache License, Version 2.0 (the "Apache License") 37314564Sdim and the BSD License (the "BSD License"), with licensee being free to 38314564Sdim choose either of the two at their discretion. 39360784Sdim 40314564Sdim You may not use this file except in compliance with either the Apache 41360784Sdim License or the BSD License. 42360784Sdim 43360784Sdim If you choose to use this file in compliance with the Apache License, the 44314564Sdim following notice applies to you: 45314564Sdim 46314564Sdim You may obtain a copy of the Apache License at 47314564Sdim 48314564Sdim http://www.apache.org/licenses/LICENSE-2.0 49314564Sdim 50314564Sdim Unless required by applicable law or agreed to in writing, software 51314564Sdim distributed under the License is distributed on an "AS IS" BASIS, 52314564Sdim WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 53314564Sdim implied. See the License for the specific language governing 54314564Sdim permissions and limitations under the License. 55314564Sdim 56314564Sdim If you choose to use this file in compliance with the BSD License, the 57314564Sdim following notice applies to you: 58314564Sdim 59314564Sdim Redistribution and use in source and binary forms, with or without 60314564Sdim modification, are permitted provided that the following conditions are 61314564Sdim met: 62314564Sdim * Redistributions of source code must retain the above copyright 63314564Sdim notice, this list of conditions and the following disclaimer. 64314564Sdim * Redistributions in binary form must reproduce the above copyright 65314564Sdim notice, this list of conditions and the following disclaimer in the 66314564Sdim documentation and/or other materials provided with the distribution. 67341825Sdim * Neither the name of the copyright holder nor the names of 68341825Sdim contributors may be used to endorse or promote products derived from 69314564Sdim this software without specific prior written permission. 70314564Sdim 71303241Sdim THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 72314564Sdim IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 73314564Sdim TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 74303241Sdim PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER 75314564Sdim BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 76314564Sdim CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 77314564Sdim SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 78314564Sdim BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 79314564Sdim WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 80314564Sdim OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 81303241Sdim ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 82303241Sdim*/ 83303241Sdim 84303241Sdim/** 85 * <p> 86 * Contains interfaces and classes needed by language runtimes to implement 87 * their own language-specific object models and type conversions. The main 88 * entry point is the 89 * {@link jdk.dynalink.linker.GuardingDynamicLinker} interface. It needs to be 90 * implemented in order to provide linking for the runtime's own object model. 91 * A language runtime can have more than one guarding dynamic linker 92 * implementation. When a runtime is configuring Dynalink for itself, it will 93 * normally set these guarding linkers as the prioritized linkers in its 94 * {@link jdk.dynalink.DynamicLinkerFactory} (and maybe some of them as fallback 95 * linkers, for e.g. handling "method not found" and similar errors in a 96 * language-specific manner if no other linker managed to handle the operation.) 97 * </p><p> 98 * A language runtime that wishes to make at least some of its linkers available 99 * to other language runtimes for interoperability will need to declare the 100 * class names of those linkers in 101 * {@code /META-INF/services/jdk.dynalink.linker.GuardingDynamicLinker} file in 102 * its distribution (typically, JAR file). 103 * </p><p> 104 * Most language runtimes will be able to implement their own linking logic by 105 * implementing {@link jdk.dynalink.linker.TypeBasedGuardingDynamicLinker} 106 * instead of {@link jdk.dynalink.linker.GuardingDynamicLinker}; it allows for 107 * faster type-based linking dispatch. 108 * </p><p> 109 * Language runtimes that allow type conversions other than those provided by 110 * Java will need to have their guarding dynamic linker (or linkers) also 111 * implement the {@link jdk.dynalink.linker.GuardingTypeConverterFactory} 112 * interface to provide the logic for these conversions. 113 * </p> 114 * @since 1.9 115 */ 116@jdk.Exported 117package jdk.dynalink.linker; 118