First, some terminology. ODBC and JDBC are technologies for connecting SQL clients to a database. You likely don't need that (more on that later). AVM is more of a concept; it means "ABL Virtual Machine". This is the ABL runtime environment that is implemented in client processes (e.g. prowin.exe, prowin32.exe, _progres.exe, _mproapsv.exe, etc.). "Direct connect" isn't really an OE-specific term. But you might be referring to a "shared memory" connection, aka a "self-service" connection, where an ABL client connects directly to a database without using the network stack. This is only possible for an ABL client, and only when it runs on the same machine as the database.
Because your database is on Unix and your IDE (which one?) is on Windows, you need to make a TCP connection from the Windows client to the Unix database. This means your database must be configured with a connection broker that allows ABL clients to connect remotely.
The minimum configuration for an ABL connection broker looks like this:
proserve <dbname> -S <TCP port number or service name> -H <db server hostname or IP address> -ServerType 4GL
The client's connection parameters might look like this:
prowin32.exe -db <dbname> -H <db server hostname> -S <TCP port number or service name>
If you use service names rather than port numbers, they must be defined in the services file of both the server and the client.
Having said that, don't use the minimum broker configuration! I kept it short for the sake of simplicity. There are lots of parameters that can be specified on a database broker, even more so if it is the primary database broker. Unfortunately this is an area where the OE documentation does a fairly bad job of explaining how things work.
Other client/server parameters you should specify on a connection broker:
-Mn (primary broker only): maximum number of remote servers and secondary connection brokers
-Mpb: maximum number of servers to spawn
-Ma: maximum number of clients per server
-Mi: minimum number of clients per server
-minport: low end of contiguous range of TCP port numbers to use for servers
-maxport: high end of contiguous range of TCP port numbers to use for servers
-n (primary broker only): maximum number of database connections, not including brokers and servers
There are other client/server-specific broker parameters but these are the main ones you need to know about.
If your IDE is OpenEdge Studio, each Procedure Editor you run can be a database client. You can specify client
startup parameters (parameters used in the command line that starts the client) to connect to a remote database, as I showed above. Alternatively, you can use client
connection parameters with the ABL CONNECT statement to connect a client that is already running to a database. All of these parameters are documented in the Startup Command and Parameter Reference manual. Database broker parameters are also documented in the Reference section of the Database Administration manual. I trust you have access to the
PDF documentation set for your OE release.
If your IDE is the Eclipse-based OpenEdge Architect (v10) or Progress Developer Studio for OpenEdge (v11), then you may have one or more database connections, depending on how your projects are configured. They can each have their own database connections or you can use a shared AVM. But the concept is similar to OE Studio. OEA/PDSOE also has a "Database Navigator" view that lets you inspect the structure of a connected database. If you want to use that feature, it uses a SQL connection to the database, rather than an ABL/4GL connection. In that case you would also need to run a SQL connection broker against your database. Its command line might look something like this:
proserve <dbname> -m3 -S <TCP port number or service name> -H <db server hostname or IP address> -ServerType SQL
Again, that is a minimum configuration. You should also specify -Mpb, -Ma, -minport, -maxport, and perhaps other parameters. Note that each broker needs its own unique port for -S; it must be different from the one use for 4GL. Also, the "-m3" designates this as a secondary broker. You need that in the command line of any broker that is started after the broker that opened the database.
Good luck, I hope this helps. Let us know if you have follow-up questions. Also, it would be helpful to know your OpenEdge version.