AI assistant for software developers
Code faster with AI code completions
What’s Tabnine
Tabnine is an AI code assistant that makes you a better developer. Tabnine will increase your development velocity with real-time code completions in all the most popular coding languages and IDEs.
Whether you call it IntelliSense, intelliCode, autocomplete, AI-assisted code completion, AI-powered code completion, AI copilot, AI code snippets, code suggestion, code prediction, code hinting, or content assist, using Tabnine can massively impact your coding velocity, significantly cutting down your coding time.
Under the hood / Tabnine technology
Tabnine is powered by multiple language-specialized machine-learning models that were pre-trained from the ground up on code. All of Tabnine’s AI models are trained on open-source code with permissive licenses. Tabnine's AI completions can be run on a developer's laptop, on a server behind your firewall, or in the cloud.
Complete code privacy
Your code always remains private.
Tabnine NEVER stores or shares any of your code. Any action that shares your code with the Tabnine servers for the purpose of private code models (part of enterprise) requires explicit opt-in. Tabnine does not retain any user code beyond the immediate time frame required for training models. Private code models created by Tabnine Enterprise are only accessible by your team members.
Trained on open-source code with permissive licenses
Tabnine only uses open-source code with permissive licenses for our Public Code trained AI model (MIT, MIT-0, Apache-2.0, BSD-2-Clause, BSD-3-Clause, Unlicense, CC0-1.0, CC-BY-3.0, CC-BY-4.0, RSA-MD, 0BSD, WTFPL, ISC). Whether you’re using Tabnine’s Pro plan or our Basic plan, your code, and AI data are NEVER used to train any models other than private code models.
Learn more
Tabnine Pro - whole line, full function, and natural language to code completions
You’re in control - As you type, Tabnine Pro serves whole-line, full-function, and even natural language to code completions. You can accept your whole line completion or keep typing to get more real-time alternatives that keep adapting to your code context.
Start a Free Tabnine Pro 14-day trial
Tabnine Enterprise
Everything Tabnine Pro & much more - The perfect solution for businesses with custom needs:
Automate Remote Knowledge Sharing - Share knowledge effortlessly across countries and time zones. Tabnine learns your code patterns, providing expert guidance to every member of your team at any time of day.
Improve Code Quality & Consistency - Tabnine Improves code consistency across your entire project, suggesting completions that align with your best practices for code that’s easier to read, manage, and maintain.
Accelerate Developer Onboarding - Tabnine’s AI assistant helps speed new team members through the onboarding process with instant inline coding guidance minimizing the training burden placed on senior developers.
Reduce Code Review Iterations - Your Tabnine AI assistant will help you get the right code the first time. Tabnine provides code guidance that’s consistent with your team’s best practices, saving costly and frustrating code review iterations.
Self-hosting - Host Tabnine locally to comply with your business’ security requirements.
Private code repository models - Tabnine Enterprise offers custom models based on multiple repositories. Connect your GitHub/GitLab/Bitbucket repositories and train your own private AI model to get personalized code completions that match your coding style & patterns.
FAQ
Something not working the way you hoped? Tabnine Support is always happy to help. Feel free to contact us anytime at support@tabnine.com
Reviews Sign in to post reviews
Works great!
Submitted by Ned Twigg on Wed, 2023-07-12 14:35
If you're having trouble with installation, try this github.com/equodev/eclipse-ai-example#readme
Can't install on Eclipse 2023-06
Submitted by Gavin Yang on Wed, 2023-06-28 01:31
When installing Tabnine 0.1.8, Eclipse pops up the Trust Authorities window. When I choose the checkbox of Tabnine update site, I get the error:
An error has occurred. See error log for more details. Cannot invoke "org.eclipse.jface.viewers.TreeNode.getChildren()" because "treeNode" is null
Here is the details:
!ENTRY org.eclipse.jface 4 2 2023-06-28 13:19:50.390
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
!STACK 0
java.lang.NullPointerException: Cannot invoke "org.eclipse.jface.viewers.TreeNode.getChildren()" because "treeNode" is null
at org.eclipse.equinox.internal.p2.ui.dialogs.TrustAuthorityDialog.getAllChildren(TrustAuthorityDialog.java:823)
at org.eclipse.equinox.internal.p2.ui.dialogs.TrustAuthorityDialog.getAllChildren(TrustAuthorityDialog.java:818)
at org.eclipse.equinox.internal.p2.ui.dialogs.TrustAuthorityDialog.lambda$3(TrustAuthorityDialog.java:257)
at org.eclipse.jface.viewers.CheckboxTreeViewer$1.run(CheckboxTreeViewer.java:168)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
at org.eclipse.jface.viewers.CheckboxTreeViewer.fireCheckStateChanged(CheckboxTreeViewer.java:165)
at org.eclipse.jface.viewers.CheckboxTreeViewer.handleSelect(CheckboxTreeViewer.java:295)
at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1205)
at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:263)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:421)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4274)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4072)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:823)
at org.eclipse.jface.window.Window.open(Window.java:799)
at org.eclipse.equinox.internal.p2.ui.ValidationDialogServiceUI.lambda$18(ValidationDialogServiceUI.java:467)
at org.eclipse.ui.internal.PendingSyncExec.run(PendingSyncExec.java:68)
at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:172)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4047)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3663)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:823)
at org.eclipse.jface.window.Window.open(Window.java:799)
at org.eclipse.epp.internal.mpc.ui.commands.AbstractMarketplaceWizardCommand.openWizardDialog(AbstractMarketplaceWizardCommand.java:146)
at org.eclipse.epp.internal.mpc.ui.commands.AbstractMarketplaceWizardCommand.execute(AbstractMarketplaceWizardCommand.java:73)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:283)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:97)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:309)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:243)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:485)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:438)
at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.handleWidgetSelection(AbstractContributionItem.java:449)
at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.lambda$2(AbstractContributionItem.java:475)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4274)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4072)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3660)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:643)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:550)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:171)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
Tabnine installer mess up the whole Eclipse installer
Submitted by Alessandro Borges on Tue, 2023-07-18 10:30
The Tabnine install is a complete failure.
It hangs at "Trusted Certificate Authorities" and do not complete the installation.
And it gets worst: After that, you can't install nor update anything until you go to Preferences -> Install/Update -> Available Software Sites and then remove the Tabnine site.
It's a shame, as it was a very promising plug-in.
Re: Tabnine installer mess up the whole Eclipse installer
Submitted by Tzuf Stokelman on Thu, 2023-07-20 01:50
Try:
Window->Preferences->Install/Update->Trust
Move to the Authorities tab
Click "Add"
paste https://eclipse-update-site.tabnine.com
Apply and Close
Install the plugin from the marketplace as usual
Re: Tabnine installer mess up the whole Eclipse installer
Submitted by Tzuf Stokelman on Wed, 2023-07-19 09:10
We are sorry to hear that. What version of Eclipse do you use? Try it on 03-2023
Re: Can't install on Eclipse 2023-06
Submitted by Tzuf Stokelman on Thu, 2023-06-29 02:50
Try to Install Tabnine on Eclipse 2023-03
Re: Re: Can't install on Eclipse 2023-06
Submitted by Gavin Yang on Thu, 2023-07-13 10:55
It's OK on Eclipse 2023-03. The issue still exists on version 0.19 while installed on Eclipse 2023-06.
Re: Re: Re: Can't install on Eclipse 2023-06
Submitted by Tzuf Stokelman on Sun, 2023-07-16 04:50
Thanks for letting us know. We are working on a fix.
Error when installing plugin on Eclipse 2021-12 (4.22)
Submitted by Moisés Álvarez on Tue, 2023-06-06 07:18
Seems like one of the required packages is no longer available.
Here is the output from Eclipse:
Re: Error when installing plugin on Eclipse 2021-12 (4.22)
Submitted by Tzuf Stokelman on Wed, 2023-06-21 03:50
Hi,
Please contact support@tabnine.com with all the details and we will take care of you.
Cannot complete the install
Submitted by 樾 巫 on Mon, 2023-06-05 23:04
Cannot complete the install because some dependencies are not satisfiable
Software being installed: a.jre.javase 18.0.0
Software being installed: Tabnine for Eclipse 0.1.8 (com.tabnine.eclipse.feature.feature.group 0.1.8)
Cannot satisfy dependency:
From: Tabnine-eclipse 0.1.8 (com.tabnine.eclipse 0.1.8)
To: osgi.ee; (&(osgi.ee=JavaSE)(version=11))
Cannot satisfy dependency:
From: Tabnine for Eclipse 0.1.8 (com.tabnine.eclipse.feature.feature.group 0.1.8)
To: org.eclipse.equinox.p2.iu; com.tabnine.eclipse [0.1.8,0.1.8]
Re: Cannot complete the install
Submitted by Tzuf Stokelman on Wed, 2023-06-21 03:49
Hi,
Please contact support@tabnine.com with all the details and we will take care of you.
Cannot install to STS 4
Submitted by Jeevan Sunkersett on Mon, 2023-04-24 08:16
After attempting to install I get the error;
Unable to read repository at https location eclipse-update-site.tabnine.com/content.xml.
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Re: Cannot install to STS 4
Submitted by Eran Yahav on Wed, 2023-04-26 14:36
Checked the install on STS4 and it works well. Could it be a problem trying to access Tabnine behind a firewall?