Difference between Python CDK and Java destination connector

Summary

Explanation of the variances between Python CDK and Java destination connector in Airbyte.


Question

what is the difference between Python CDK and java destination connector?



This topic has been created from a Slack thread to give it more visibility.
It will be on Read-Only mode here. Click here if you want to access the original thread.

Join the conversation on Slack

["python-cdk", "java-destination-connector", "airbyte"]

The Python CDK (Connector Development Kit) and Java connectors in Airbyte serve similar purposes but are implemented in different programming languages. The Python CDK is a framework for rapidly developing production-grade Airbyte connectors. It offers helpers specific for creating Airbyte source connectors for HTTP APIs (REST APIs, GraphQL, etc.) and generic Python sources. The Python CDK was created because most contributors felt comfortable writing in Python. It also provides various features like authentication, pagination, handling rate limiting, and caching for HTTP API-based connectors. However, it’s important to note that Airbyte will only accept connector contributions made using the Low-Code CDK or the Connector Builder in the next few months. New pull requests made with the Python CDK will be closed, but Airbyte will inquire to understand why it wasn’t done with Low-Code/Connector Builder so they can address missing features[^1^][^5^]. Java connectors, on the other hand, are built using Java. From the discussion on Github, it seems that building connectors with the Python and Java CDK has a significant difference. Building with local CDK requires injecting the CDK into the built virtual environment. For Java connectors, Gradle should build them with the local CDK automatically without an extra step[^3^]. [^1^]: Python CDK Documentation [^3^]: Github Issue Comment [^5^]: HTTP-API-based Connectors

I’m new here, but I believe the Python CDK is focused on sources too. You might be stuck with Java CDK for destinations for now.

You of course can build a destination in any language. I don’t know if our Python CDK has affordances that would cover the whole flow though. I.e. there’s no templated “DestinationConnector” class just yet. Let me ask the team, though!