P4 is a language designed for instructing forwarding-plane devices like switches, NICs, and firewalls how to process packets.
P4 and Software Defined Networking (SDN) are complementary, as P4 allows the programming of individual network elements and SDN solutions, like MojaNET, can be used to deliver P4 programs that can modify the behaviors of those network elements.